Android
Android RecyclerView 스와이프하여 항목 삭제
션 쿠
2019. 7. 14. 23:54
안드로이드에서 RecyclerView 항목을 제거하기 위한 방법에는 여러가지가 있다.
그 중에서도 가장 세련된 방법들 중 하나로 채택되는 것이 Swipe to Delete 방식이다.
이것에 대해 간단히 포스팅하고, 추후에 내용을 덧붙일 예정이다.
우선, RecyclerView와 RecyclerAdapter가 선언되어 있는 상황을 가정하고 설명하겠다.
ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
@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) {
final int position = viewHolder.getAdapterPosition();
infos.remove(position);
adapter.notifyItemRemoved(position);
}
};
우선, 액티비티 클래스 내에 위와 같이 simpeItemTouchCallback을 선언한다.
infos는 ArrayList 객체로써 adapter에 달려있는 배열이다.
그리고 아래 코드처럼 attach 해주면 적용된다.
recyclerView = (RecyclerView)findViewById(R.id.playerRecyclerView);
recyclerView.setHasFixedSize(true);
layoutManager = new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL);
recyclerView.setLayoutManager(layoutManager);
adapter = new MyRecyclerAdapter(infos);
recyclerView.setAdapter(adapter);
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleItemTouchCallback);
itemTouchHelper.attachToRecyclerView(recyclerView);
맨 아래 두 줄이 추가한 내용이다.