从RecyclerView分离ItemTouchHelper

时间:2016-02-11 17:01:31

标签: android

我有一个带有工作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。

3 个答案:

答案 0 :(得分:17)

我最初的动机是让用户能够禁用对列表项的滑动操作(如果他们愿意的话)。我认为这样做的方法是将RecyclerViewItemTouchHelper.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);