android
[Android / RecyclerView] #2 밀어서 아이템 삭제 구현
Shin_lab
2020. 2. 5. 14:47
1. Custom Adapter에 삭제를 위한 함수를 추가한다.
- #1 을 통해 제작된 코드에 추가
// 내부 데이터 값 제거
fun removeTask(position: Int) {
tasks.removeAt(position)
notifyDataSetChanged()
}
2. ItemTouchHelper 클래스 구현
- ItemTouchHelper.SimpleCallback 구현 (드래그 방향과 스와이프 방향 설정)
- attachToRecyclerView를 통해 RecyclerView와 연동
- onSwiped에서 Adapter에 삭제에 대한 처리 함수 호출
fun initRecyclerView() {
// Recycler View에 Custom Adapter 설정
rv_example_recyclerview.adapter = RvExampleDefaultAdapter()
// Adapter 초기 데이터 설정
(rv_example_recyclerview.adapter as RvExampleDefaultAdapter).setTaskList(viewModel.taskList)
// ItemTouchHelper 구현 (SDK Version 22부터 사용 가능)
ItemTouchHelper(object : ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT or ItemTouchHelper.RIGHT) {
override fun onMove(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder): Boolean {
return true
}
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
// Adapter에 아이템 삭제 요청
(rv_example_recyclerview.adapter as RvExampleDefaultAdapter).removeTask(viewHolder.adapterPosition)
}
}).apply {
// ItemTouchHelper에 RecyclerView 설정
attachToRecyclerView(rv_example_recyclerview)
}
}
RecyclerView