티스토리 뷰



서론

리사이클러뷰에서 밀어서 아이템 삭제 기능을 구현하고 싶어서 샘플을 만들어 보았다.

ListView에서 해당기능을 이용하기위한 여러가지 라이브러리들이 존재하는데

RecyclerView에서는 compile sdk 22버전부터는 기본적으로 제공해주는 기능을 이용해서 해당 기능을 구현할 수 있다.

관련 샘플소스는 깃헙에 공개해두었다.

https://github.com/karrel84/SwipeToDeleteSample.git


구현

// setup swipe to remove item
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleItemTouchCallback);
itemTouchHelper.attachToRecyclerView(mBinding.recyclerView);

△ ItemTouchHelper를 생성해서 attachToRecyclerView의 인자로 리사이클러뷰를 넣어준다.


ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {

@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
showToast("on Move");
return true;
}

@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int swipeDir) {
// 삭제되는 아이템의 포지션을 가져온다
final int position = viewHolder.getAdapterPosition();
// 데이터의 해당 포지션을 삭제한다
showToast("on remove " + mList.remove(position));
// 아답타에게 알린다
mBinding.recyclerView.getAdapter().notifyItemRemoved(position);
}
};

△ SimpleCallback의 소스이다. 생성시 어느방향을 통한 이벤트를 발생시킬지 정할 수 있다. onWiped메소드가 호출되면 해당부분에서 데이터를 삭제하고 아답터의 notifyItemRemoved메소드를 호출하면 된다.



공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크