Отсоединить ItemTouchHelper от RecyclerView

У меня есть RecyclerView с рабочим ItemTouchHelper. Все отлично работает, но мне интересно, есть ли способ отделить ItemTouchHelper от RecyclerView без повторного создания списка? Для удовольствия это код, который я использую для присоединения:

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

В идеале, я хотел бы проверить предпочтение в say onResume() активности, в которой этот RecyclerView живет и отделяет ItemTouchHelper на основе этого.

Ответы

Ответ 1

Моя первоначальная мотивация для этого заключалась в том, чтобы позволить пользователю отключать действия по удалению элементов списка, если они этого захотят. Я предположил, что это нужно, чтобы отсоединить ItemTouchHelper от RecyclerView. Теперь я обнаружил, что ItemTouchHelper.SimpleCallback имеет следующий метод для переопределения:

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

Таким образом, возврат правильного состояния здесь эффективно отключает обработку салфетки. Надеюсь, это поможет кому-то в будущем.

Ответ 2

Вы можете отсоединить ItemTouchHelper от RecyclerView, установив recyclerview в значение null:

mItemTouchHelper.attachToRecyclerView(null);