【发布时间】:2023-03-22 19:04:01
【问题描述】:
我有RecyclerView 拖放功能,但我想在Drop 上做一些计算。当我将expensiveFunction() 放入onMove() 时,它会在每次位置更改时触发,直到拖动结束。这是一个很大的矫枉过正。有没有办法在拖动结束时触发功能?
val itemTouchHelper = ItemTouchHelper(simpleCallback)
itemTouchHelper.attachToRecyclerView(recyclerView)
private var simpleCallback = object : ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP.or(ItemTouchHelper.DOWN), 0) {
override fun onMove(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder): Boolean {
val startPosition = viewHolder.absoluteAdapterPosition
val endPosition = target.absoluteAdapterPosition
Collections.swap(itemList, startPosition, endPosition)
recyclerView.adapter?.notifyItemMoved(startPosition, endPosition)
expensiveFunction()
return true
}
}
【问题讨论】:
-
如果自上次触地事件以来有移动,您可以添加触地事件并在那里执行。
setOnTouchListener和在onMove内设置的布尔标志。
标签: android kotlin android-recyclerview itemtouchhelper