RecyclerView滑动删除之ItemTouchHelper

      ItemTouchHelper是一个强大的工具,它处理好了关于在RecyclerView上添加拖动排序与滑动删除的所有事情。它是RecyclerView.ItemDecoration的子类,也就是说它可以轻易的添加到几乎所有的LayoutManager到Adapter中。它还可以和现有的item动画一起工作,提供受类型限制的拖放动画等等

使用 ItemTouchHelper 和 ItemTouchHelper.Callback

    要使用ItemTouchHelper,你需要创建一个ItemTouchHelper.Callback。这个接口可以让你监听“move”与 “swipe”事件。这里还是控制view被选中的状态以及重写默认动画的地方。如果你只是想要一个基本的实现,有一个帮助类可以使用:SimpleCallback,但是为了了解其工作机制,我们还是自己实现。

        实现该接口的子类我们将重写下面三个回调方法,另外,还重写需要两个辅助方法:


RecyclerView滑动删除之ItemTouchHelper_第1张图片

辅助方法:


RecyclerView滑动删除之ItemTouchHelper_第2张图片

1.getMovementFlags()

    ItemTouchHelper可以让你轻易得到一个事件的方向。你需要重写getMovementFlags()方法来指定可以支持的拖放和滑动的方向。使用helperItemTouchHelper.makeMovementFlags(int, int)来构造返回的flag。这里我们启用了上下左右两种方向。注:上下为拖动(drag),左右为滑动(swipe)


RecyclerView滑动删除之ItemTouchHelper_第3张图片

2.onMove()

3.onSwip()

这两个方法,顾名思义就是滑动和拖动时的回调,我们一般在这两个方法中写入我们自己的接口(如下图ItemTouchHelperAdapter)回调方法,将回调传递出去,更新数据!


RecyclerView滑动删除之ItemTouchHelper_第4张图片

在Adapter中处理我们自己写的接口回调,跟新adapter数据


RecyclerView滑动删除之ItemTouchHelper_第5张图片

最后在Activity中将itemtouchHelper  attach到Recyclerview中


RecyclerView滑动删除之ItemTouchHelper_第6张图片

你可能感兴趣的:(RecyclerView滑动删除之ItemTouchHelper)