Java 如何限制ItemtouchHelper仅从左向右滑动
您好,我正在使用“回收器”视图并应用ITEMTOUCHHELPER。 我应用逻辑Java 如何限制ItemtouchHelper仅从左向右滑动,java,android,itemtouchhelper,Java,Android,Itemtouchhelper,您好,我正在使用“回收器”视图并应用ITEMTOUCHHELPER。 我应用逻辑(direction==ItemTouchHelper.LEFT),然后删除项。 所有这些都正常工作 但当我向右滑动,然后向左滑动时。它给出的dX值大于0.5,这意味着在右侧完成刷卡 如果我删除了一个项目没有问题,如果我保持原样并再次滑动,那么这种奇怪的行为就会开始 当我从左侧多次滑动时,它会给出dX0 一行中的问题 向左滑动会得到dX>0 问题 为什么我会有这种奇怪的行为?感觉像是一个应用程序挂起了 但它没有挂起
(direction==ItemTouchHelper.LEFT)
,然后删除项。
所有这些都正常工作
但当我向右滑动,然后向左滑动时。它给出的dX值大于0.5,这意味着在右侧完成刷卡
如果我删除了一个项目没有问题,如果我保持原样并再次滑动,那么这种奇怪的行为就会开始
当我从左侧多次滑动时,它会给出dX0
一行中的问题
向左滑动会得到dX>0
问题
为什么我会有这种奇怪的行为?感觉像是一个应用程序挂起了
但它没有挂起,即使我向左滑动,它也在向右滑动。如果您只想允许向左滑动,这是您的解决方案:
@Override
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
//int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN;
int swipeFlags = ItemTouchHelper.START;
return makeMovementFlags(dragFlags, swipeFlags);
}
我认为这是一个更干净、更简单的解决方案 扩展
ItemTouchHelper.SimpleCallback
为了获得自定义行为,您应该传递要滑动或拖动的项目的方向,您不需要重写getMovementFlags
,因为此方法使用我们将要传递的拖动和滑动方向。例如:
public class RecyclerItemTouchHelper extends ItemTouchHelper.SimpleCallback {
public RecyclerItemTouchHelper(int dragDirs, int swipeDirs) {
super(dragDirs, swipeDirs);
}
// ...
}
现在,在“活动”或“片段”中,当您设置“回收器”视图时,可以指定如下的滑动和拖动行为:
// 0 means no dragging at all and the 2nd parameters means only swipe left is allowed
RecyclerItemTouchHelper helper = new RecyclerItemTouchHelper(0, ItemTouchHelper.LEFT);
new ItemTouchHelper(helper).attachToRecyclerView(yourRecyclerView);
现在,您可以根据需要配置拖动和滑动。我希望有帮助
有关更多信息,您可以查看官方文档,这里有您需要的非常准确的示例:
对不起,我不是以英语为母语的人。为什么需要这个x值???如果你需要一个很好的例子,如何在一个recyclerview上实现刷卡关闭,请查看这篇文章:@XxGoliathusxX基本上我知道这件事,但我不想右侧刷卡这里的拖拉是什么?已接受的答案现在它解决了我的问题
dX<0
或0
不高于非常精确的拖动间隔是您可以拖放项目的方向。在这种情况下,上下。假设您支持此行为:D
// 0 means no dragging at all and the 2nd parameters means only swipe left is allowed
RecyclerItemTouchHelper helper = new RecyclerItemTouchHelper(0, ItemTouchHelper.LEFT);
new ItemTouchHelper(helper).attachToRecyclerView(yourRecyclerView);