gpt4 book ai didi

java - 为 RecyclerView 中的某些行禁用 ItemTouchHelper Swipe

转载 作者:行者123 更新时间:2023-11-29 08:28:52 25 4
gpt4 key购买 nike

我只是使用以下方法在我的数据列表上进行左右滑动。它工作正常。我想知道如何禁用数据列表中某些行的滑动操作。例如:有些数据用户不应该删除。我想限制这些行。

ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {


@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
return false;
}

@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {

//Remove swiped item from the list and notify the RecyclerView

}
@Override
public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {

}
};

最佳答案

使用getMovementFlags()您的 ItemTouchHelper.SimpleCallback。您需要通过不返回滑动标志来检测要禁止滑动的 View 持有者。

Here是网格布局不允许滑动的示例。

  @Override
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
// Set movement flags based on the layout manager
if (recyclerView.getLayoutManager() instanceof GridLayoutManager) {
final int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN | ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT;
final int swipeFlags = 0;
return makeMovementFlags(dragFlags, swipeFlags);
} else {
final int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN;
final int swipeFlags = ItemTouchHelper.START | ItemTouchHelper.END;
return makeMovementFlags(dragFlags, swipeFlags);
}
}

关于java - 为 RecyclerView 中的某些行禁用 ItemTouchHelper Swipe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50002838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com