Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ItemTouchHelper for Horizontal RecyclerView

I am trying to implement ItemTouchHelper for Horizontal Recyclerview. (setting layout manager to LinearLayoutManager with orientation LinearLayoutManager.HORIZONTAL). Example, I want to delete an item when swiped down and drag to left or right for swapping items.

All the samples I have gone through explains ItemTouchHelper for Vertical Recyclerview or items in grid.

Followed samples from following links:
https://medium.com/@ipaulpro/drag-and-swipe-with-recyclerview-b9456d2b1aaf
https://medium.com/@xabaras/recyclerview-swiping-with-style-151e21b1af07

How can I achieve swipe down to delete and drag sideways to swap items in Horizontal Recyclerview?

like image 433
Nabha Kamath Avatar asked Oct 19 '25 09:10

Nabha Kamath


1 Answers

You can use this simple code to achieve the swipe down to remove.

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

        @Override
        public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
            final int position = viewHolder.getLayoutPosition();
            if (direction == ItemTouchHelper.DOWN) {
                //your code for deleting the item from database or from the list
                adapter.removeNote(position);
                adapter.notifyItemRemoved(position)
            }
        }
    };
    ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleCallback);
    itemTouchHelper.attachToRecyclerView(recyclerView);

For Kotlin geeks below is the code for the same -

val simpleCallback = object : ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.DOWN) {
        override fun onMove(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder): Boolean {
            return false
        }

        override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
            if (direction == ItemTouchHelper.DOWN) {
                //your code for deleting the item from database or from the list
                val position = viewHolder.adapterPosition
                noteList.removeAt(position)
                adapter.notifyItemRemoved(position)
            }
        }
    }
    val itemTouchHelper = ItemTouchHelper(simpleCallback)
    itemTouchHelper.attachToRecyclerView(recycler_view)
like image 118
Deepak Kumar Avatar answered Oct 21 '25 23:10

Deepak Kumar



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!