首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RecyclerView on drop

RecyclerView on drop
EN

Stack Overflow用户
提问于 2021-11-16 21:31:46
回答 1查看 49关注 0票数 2

我有RecyclerView拖放功能,但我想做一些计算onDrop。当我将我的expensiveFunction()放入onMove()时,它会在每次位置改变时触发,直到拖动结束。这太夸张了。有没有办法在拖拽端触发函数?

代码语言:javascript
复制
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
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-16 23:25:18

您可以重写当ViewHolderItemTouchHelper滑动或拖动时调用的onSelectedChanged()

要捕获删除操作,请检查将actionState值设置为ItemTouchHelper.ACTION_STATE_IDLE

代码语言:javascript
复制
override fun onSelectedChanged(viewHolder: RecyclerView.ViewHolder?, actionState: Int) {
    super.onSelectedChanged(viewHolder, actionState)
    when (actionState) {
        // when the item is dropped
        ItemTouchHelper.ACTION_STATE_IDLE -> {
            Log.d(TAG, "Item is dropped")
        }
    }

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69996269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档