728x90

3일 차에 아이템이 삭제되지 기능을 스와이프로 전화를 거는 기능으로 수정해서 구현을 함 

swipe-to-action

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연결

 

+ Recent posts