본문 바로가기

Android

Android RecyclerView 스와이프하여 항목 삭제

안드로이드에서 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);

맨 아래 두 줄이 추가한 내용이다.