Отсоединить 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);