ItemTouchHelper是一个强大的工具,它处理好了关于在RecyclerView上添加拖动排序与滑动删除的所有事情。它是RecyclerView.ItemDecoration的子类,也就是说它可以轻易的添加到几乎所有的LayoutManager到Adapter中。它还可以和现有的item动画一起工作,提供受类型限制的拖放动画等等
使用 ItemTouchHelper 和 ItemTouchHelper.Callback
要使用ItemTouchHelper,你需要创建一个ItemTouchHelper.Callback。这个接口可以让你监听“move”与 “swipe”事件。这里还是控制view被选中的状态以及重写默认动画的地方。如果你只是想要一个基本的实现,有一个帮助类可以使用:SimpleCallback,但是为了了解其工作机制,我们还是自己实现。
实现该接口的子类我们将重写下面三个回调方法,另外,还重写需要两个辅助方法:
辅助方法:
1.getMovementFlags()
ItemTouchHelper可以让你轻易得到一个事件的方向。你需要重写getMovementFlags()方法来指定可以支持的拖放和滑动的方向。使用helperItemTouchHelper.makeMovementFlags(int, int)来构造返回的flag。这里我们启用了上下左右两种方向。注:上下为拖动(drag),左右为滑动(swipe)
2.onMove()
3.onSwip()
这两个方法,顾名思义就是滑动和拖动时的回调,我们一般在这两个方法中写入我们自己的接口(如下图ItemTouchHelperAdapter)回调方法,将回调传递出去,更新数据!