728x90
3일 차에 아이템이 삭제되지 기능을 스와이프로 전화를 거는 기능으로 수정해서 구현을 함
SwipeHelperCallback
class SwipeHelperCallback(private val context: Context, private val adapter: ContactListAdapter) :
ItemTouchHelper.Callback() {
override fun getMovementFlags(
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder
): Int {
return makeMovementFlags(0, RIGHT) //아래,위는 사용x 오른쪽만 스와이프 되게
}
override fun onMove(
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder,
target: RecyclerView.ViewHolder
): Boolean {
return false
}
//스와이프 되면 onSwiped가 호출됨
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
val position = viewHolder.adapterPosition
val item = adapter.getPosition(position) as? ContactItems.Contents
item?.let {
val phoneNumber = it.phoneNumber
Intent(Intent.ACTION_DIAL).apply {
data = Uri.parse("tel:$phoneNumber")
context.startActivity(this)
}
}
}
//스와이프 거리 //반만 스와이프해도 onSwiped 되게 설정
override fun getSwipeThreshold(viewHolder: RecyclerView.ViewHolder): Float {
return 0.5f
}
}
ContactListAdapter 의 getPosition
fun getPosition(position: Int): ContactItems {
return ContactItemManager.sortWithHeader()[position]
}
SwipeHelperCallback의 생성자 private val context: Context, private val adapter: ContactListAdapter는 context와 adapter를 사용하기 위해 만듦
//리사이클러뷰에 적용
val swipeHelperCallback = SwipeHelperCallback(context,listAdapter)
val itemTouchHelper = ItemTouchHelper(swipeHelperCallback)//ItemTouchHelper에 SwipeHelperCallback 연결
itemTouchHelper.attachToRecyclerView(binding.recyclerViewContact) //attchToRecyclerView로 recyclerView연결