2016-04-14 40 views
1

我使用https://github.com/iPaulPro/Android-ItemTouchHelper-Demo/中的示例来处理RecyclerView上的拖动和滑动操作。除了我不知道如何阻止它向上/向下/向左滑动之外,它工作得很好。我可以忽略滑动,但我不希望它们发生。那可能吗?如何阻止我的recyclerview允许向左滑动,并且只允许右滑动?

我甚至在上面链接的例子中修改了这段代码,将ItemTouchHelper.RIGHT添加到滑动标志,但它没有帮助。

@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 | ItemTouchHelper.RIGHT ; 
      return makeMovementFlags(dragFlags, swipeFlags); 
     } 
    } 
+0

“我甚至修改这个代码在我上面挂ItemTouchHelper.RIGHT添加到刷卡标志的例子,但它并没有帮助。”这是正确的方向,请发布您的修改代码 –

+0

代码已发布。看看这行'final int swipeFlags = ItemTouchHelper.START | ItemTouchHelper.END | ItemTouchHelper.RIGHT;'我也测试过以确保代码被调用。 – casolorz

回答

1

修改

final int swipeFlags = ItemTouchHelper.START | ItemTouchHelper.END | ItemTouchHelper.RIGHT ; 

final int swipeFlags = ItemTouchHelper.RIGHT ; 
+1

谢谢你,修复它。 – casolorz

0

我很新的android,所以不知道这是否适用于你,但它为我做。

我设法做到这一点通过更改ItemTouchHelper.SimpleCallback构造函数(也许尝试使用SimpleCallback,而不是您正在使用的回调?)。

它曾经说:

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

现在说

ItemTouchHelper.SimpleCallback simpleItemTouchCallback = 
      new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.RIGHT) 

希望有所帮助。