Search code examples
androidandroid-recyclerviewitemtouchhelper

Detach ItemTouchHelper from RecyclerView


I have a RecyclerView with a working ItemTouchHelper. Everything works great, but I am wondering if there is a way I can detach the ItemTouchHelper from the RecyclerView without re-creating the list? For fun, this is the code I'm using to attach:

ItemTouchHelper.Callback callback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT)
{
    ...
};
mItemTouchHelper = new ItemTouchHelper(callback);
mItemTouchHelper.attachToRecyclerView(mPasswordList);

Ideally, I'd like to check a preference in say onResume() of the Activity this RecyclerView lives in and detach the ItemTouchHelper based on that.


Solution

  • My original motivation for this was to allow the user the ability to disable swipe actions on list items if they so choose. I assumed the way to do this was to detach the ItemTouchHelper from the RecyclerView. I have now found the ItemTouchHelper.SimpleCallback has the following method available to override:

    @Override
    public boolean isItemViewSwipeEnabled()
    {
        return mSwipable;
    }
    

    So, returning the correct state here effectively turns off the swipe handling. I hope this helps someone in the future.