从 RecyclerView 分离 ItemTouchHelper

Detach ItemTouchHelper from RecyclerView

我有一个 RecyclerView 和一个工作 ItemTouchHelper。一切正常,但我想知道是否有一种方法可以在不重新创建列表的情况下将 ItemTouchHelperRecyclerView 中分离出来?为了好玩,这是我用来附加的代码:

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

理想情况下,我想检查 Activity 中 onResume() 的偏好,此 RecyclerView 居住并基于此分离 ItemTouchHelper

我这样做的最初动机是让用户能够在他们选择时禁用列表项上的滑动操作。我假设这样做的方法是将 ItemTouchHelperRecyclerView 中分离出来。我现在发现 ItemTouchHelper.SimpleCallback 可以覆盖以下方法:

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

因此,在此处返回正确的状态可以有效地关闭滑动处理。我希望这对以后的人有所帮助。

您可以通过将 recyclerview 设置为 null 来从 RecyclerView 中分离 ItemTouchHelper:

mItemTouchHelper.attachToRecyclerView(null);

对我来说,要禁用附加到 RecyclerView 的整个 ItemTouchHelper,只需将其设置为 null

mItemTouchHelper = null;

要重新启用,请将其设置为其值

mItemTouchHelper = new ItemTouchHelper(callback);