从RecyclerView分离ItemTouchHelper

nve*_*eek 17 android

我有一个带有工作ItemTouchHelper的RecyclerView.一切都很好,但我想知道是否有一种方法可以从RecyclerView分离ItemTouchHelper而无需重新创建列表?为了好玩,这是我用来附加的代码:

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

理想情况下,我想检查一下onResume()这个RecyclerView所在的Activity 的偏好,并根据它来分离ItemTouchHelper.

nve*_*eek 19

我最初的动机是让用户能够禁用对列表项的滑动操作,如果他们愿意的话.我认为这样做的方法是从中分离ItemTouchHelper出来RecyclerView.我现在发现ItemTouchHelper.SimpleCallback有以下方法可以覆盖:

@Override
public boolean isItemViewSwipeEnabled()
{
    return mSwipable;
}
Run Code Online (Sandbox Code Playgroud)

因此,在此处返回正确的状态会有效地关闭滑动处理.我希望这可以帮助将来的某个人.

  • 你节省了我的一天(或我的一周).谢谢! (3认同)

小智 19

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

mItemTouchHelper.attachToRecyclerView(null);
Run Code Online (Sandbox Code Playgroud)

  • @CheokYanCheng,我检查了Android文档,[他们说](https://developer.android.com/reference/androidx/recyclerview/widget/ItemTouchHelper#attachToRecyclerView(androidx.recyclerview.widget.RecyclerView))`mItemTouchHelper。 AttachToRecyclerView(null)` 可用于分离。 (2认同)