티스토리 뷰

RecyclerView를 활용할 때 직관성을 높이기 위해 스와이프를 사용하여 삭제 기능을 구현하려고 한다

 

ItemTouchHelper.SimpleCallback simpleCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.RIGHT | ItemTouchHelper.LEFT) {
    @Override
    public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
        return false;
    }

    @Override
    public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
        mList.remove(viewHolder.getLayoutPosition());
        adapter.notifyItemRemoved(viewHolder.getLayoutPosition());
    }
};
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleCallback);
itemTouchHelper.attachToRecyclerView(recyclerView);

스와이프를 오른쪽으로만 동작시키고 싶다면 생성자에 인자를 ItemTouchHelper.RIGHT만 주면 되고 왼쪽, 오른쪽 모두 동작시키고 싶다면 위의 코드처럼 인자를 전달하면 된다

 

RecyclerView의 항목을 스와이프 했을 때 동작을 onSwiped() 함수에 정의하면 된다

위의 코드는 리스트에서 항목 삭제 후 어댑터에 알려주는 동작을 정의한 것이다

 

동작을 정의한 것을 RecyclerView에 연결하기 위해 마지막 두 줄을 입력한다