전공/Android
[영화 정보 앱 만들기] 03. recycler view 삭제
BBungyaLog
2024. 6. 19. 23:51
# 구현하고자 하는 것
- 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)
동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.