我有一个带有工作ItemTouchHelper的RecyclerView。一切都很好,但我想知道是否有一种方法可以从RecyclerView分离ItemTouchHelper而无需重新创建列表?为了好玩,这是我用来附加的代码:
ItemTouchHelper.Callback callback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT)
{
...
};
mItemTouchHelper = new ItemTouchHelper(callback);
mItemTouchHelper.attachToRecyclerView(mPasswordList);
理想情况下,我想检查这个RecyclerView所在的Activity onResume()
中的首选项,并根据它来分离ItemTouchHelper。
答案 0 :(得分:17)
我最初的动机是让用户能够禁用对列表项的滑动操作(如果他们愿意的话)。我认为这样做的方法是将RecyclerView
与ItemTouchHelper.SimpleCallback
分开。我现在发现@Override
public boolean isItemViewSwipeEnabled()
{
return mSwipable;
}
有以下方法可以覆盖:
{{1}}
因此,在此处返回正确的状态会有效地关闭滑动处理。我希望这有助于将来的某个人。
答案 1 :(得分:17)
您可以通过将recyclerview设置为null来从RecyclerView分离ItemTouchHelper:
mItemTouchHelper.attachToRecyclerView(null);
答案 2 :(得分:0)
对我来说,要禁用附加到 ItemTouchHelper
的整个 RecyclerView
,只需将其设置为 null
mItemTouchHelper = null;
并重新启用,将其设置为它的值
mItemTouchHelper = new ItemTouchHelper(callback);