Skip to content

拖拽排序和侧滑删除

angcyo edited this page Nov 10, 2019 · 2 revisions

拖拽排序侧滑删除都是基于原生的ItemTouchHelper实现, 都是RV的原生组件.

拖拽排序功能比较常见,不多介绍.

这里的侧滑删除, 并非侧滑菜单, 需要注意这一点.因为ItemTouchHelper原生不支持侧滑菜单.

拖拽排序 侧滑删除

功能使用

此功能需要DragCallbackHelper组件的支持:

DragCallbackHelper().attachToRecyclerView(recyclerView)

可配置的参数:

/**支持拖拽的方向, 0表示不开启拖拽*/
var itemDragFlag = FLAG_ALL
/**支持滑动删除的方向, 0表示不开启滑动*/
var itemSwipeFlag = FLAG_NONE
/**
 * 长按是否激活拖拽,手动开始拖拽请调用[startDrag]
 * */
var enableLongPressDrag = true

FLAG其实就是ItemTouchHelper.LEFT等的组合, 如下:

public val FLAG_NO_INIT = -1

public val FLAG_NONE = 0

public val FLAG_ALL = ItemTouchHelper.LEFT or
        ItemTouchHelper.RIGHT or
        ItemTouchHelper.DOWN or
        ItemTouchHelper.UP

public val FLAG_VERTICAL = ItemTouchHelper.DOWN or ItemTouchHelper.UP

public val FLAG_HORIZONTAL = ItemTouchHelper.LEFT or ItemTouchHelper.RIGHT

可设置的回调

 /**[clearView]的回调*/
var onClearView: (recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder) -> Unit =
{ _, _ ->

}

/**[onSelectedChanged]的回调*/
var onSelectedChanged: (viewHolder: RecyclerView.ViewHolder?, actionState: Int) -> Unit =
    { _, _ -> }

滑动删除额外配置

默认情况下, 滑动删除的时候会出现滑动可删除的提示.

这个提示可以通过swipeTipText属性配置提示文本,

可以通过enableSwipeTip属性关闭or开启提示.