# 구현하고자 하는 것

- recycler view 롱 클릭 시 해당 뷰 삭제

 

# 코드 구현

- MovieAdapter에서 이벤트 리스너 구현

inner class MovieViewHolder(val itemBinding: ListItemBinding)
        : RecyclerView.ViewHolder(itemBinding.root) {
        init {
            itemBinding.root.setOnLongClickListener{
                longClickListener.onItemLongClick(it, adapterPosition)
            }
        }
    }

    interface onItemLongClickListener {
        fun onItemLongClick(view: View, position: Int) : Boolean
    }

    lateinit var longClickListener: onItemLongClickListener

    fun setOnItemLongClickListener (listener: onItemLongClickListener) {
        this.longClickListener = listener
    }

 

- Main Activity에서 기능을 구현한 listener 객체를 adapter에 전달

val listener = object: MovieAdapter.onItemLongClickListener {
            override fun onItemLongClick(view: View, position: Int): Boolean {
                val builder = AlertDialog.Builder(this@MainActivity)
                builder.setTitle("영화 정보 삭제")
                    .setMessage("정말 삭제하시겠습니까?")
                    .setPositiveButton(
                        "확인"
                    ) { dialog, which ->
                        movies.removeAt(position)
                        adapter.notifyDataSetChanged() // 화면 갱신
                    }
                    .setNegativeButton(
                        "취소"
                    ) { dialog, which ->
                        adapter.notifyDataSetChanged() // 화면 갱신
                    }
                builder.show()
                return true
            }
}
adapter.setOnItemLongClickListener(listener)

 

동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.

 

+ Recent posts