Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何限制ItemtouchHelper仅从左向右滑动_Java_Android_Itemtouchhelper - Fatal编程技术网

Java 如何限制ItemtouchHelper仅从左向右滑动

Java 如何限制ItemtouchHelper仅从左向右滑动,java,android,itemtouchhelper,Java,Android,Itemtouchhelper,您好,我正在使用“回收器”视图并应用ITEMTOUCHHELPER。 我应用逻辑(direction==ItemTouchHelper.LEFT),然后删除项。 所有这些都正常工作 但当我向右滑动,然后向左滑动时。它给出的dX值大于0.5,这意味着在右侧完成刷卡 如果我删除了一个项目没有问题,如果我保持原样并再次滑动,那么这种奇怪的行为就会开始 当我从左侧多次滑动时,它会给出dX0 一行中的问题 向左滑动会得到dX>0 问题 为什么我会有这种奇怪的行为?感觉像是一个应用程序挂起了 但它没有挂起

您好,我正在使用“回收器”视图并应用ITEMTOUCHHELPER。 我应用逻辑
(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);