티스토리 뷰
서론
리사이클러뷰에서 밀어서 아이템 삭제 기능을 구현하고 싶어서 샘플을 만들어 보았다.
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메소드를 호출하면 된다.
'개발 > ANDROID' 카테고리의 다른 글
[안드로이드] 데이터 바인딩 (0) | 2017.08.24 |
---|---|
[안드로이드] 블루투스 SPP를 위한 샘플 앱 개발 (0) | 2017.08.24 |
[안드로이드 스튜디오 설정] 클래스 생성시 주석 넣기 (0) | 2017.07.28 |
[안드로이드] 커스텀 사인뷰 (2) | 2017.07.27 |
[안드로이드] custom TimePickerDialog (0) | 2017.07.24 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크