在 RecyclerView 中的特定位置拖放停止

编程入门 行业动态 更新时间:2024-10-25 18:27:45
本文介绍了在 RecyclerView 中的特定位置拖放停止的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

有没有什么方法可以使用 RecyclerView 来停止项目的拖放到特定位置.我已经实现了 Drag &使用下面的代码删除.

Is there any way to Halt the Drag Drop of item for specific position using RecyclerView. I have achieved the Drag & Drop using below code.

val _ithCallback = object : ItemTouchHelper.Callback() { //and in your implementation of override fun onMove(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder): Boolean { val fromPosition = viewHolder.adapterPosition val toPosition = target.adapterPosition // Video position if (fromPosition == list.size - 1 || toPosition == list.size - 1) { return false } if (list[fromPosition].trim().isEmpty()){ return false } if (fromPosition < toPosition) { for (i in fromPosition until toPosition) { Collections.swap(list, i, i + 1) } } else { for (i in fromPosition downTo toPosition + 1) { Collections.swap(list, i, i - 1) } } adapter?.notifyItemMoved(fromPosition, toPosition) return true } override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) { } //defines the enabled move directions in each state (idle, swiping, dragging). override fun getMovementFlags(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder): Int { return makeFlag(ItemTouchHelper.ACTION_STATE_DRAG, ItemTouchHelper.DOWN or ItemTouchHelper.UP or ItemTouchHelper.START or ItemTouchHelper.END) } }

并像这样使用它

val ith = ItemTouchHelper(_ithCallback) ith.attachToRecyclerView(imagesRecyclerView)

推荐答案

最后,经过对 ItemTouchHelper 类的大量研究,我这样解决了.

Finally, after lots of research in ItemTouchHelper class i resolved it like this.

我所做的是将标志设置为 ACTION_STATE_IDLE 我想停止拖放.希望它可以帮助像我这样的人.

What i have done is set the flag as ACTION_STATE_IDLE where i want to halt the Drag and Drop. Hope it helps someone like me.

以下是 Kotlin 版本.如果有人在 JAVA 中需要相同的内容,我可以转换它.

Below is the Kotlin version. If anyone needs the same in JAVA i can convert it.

//defines the enabled move directions in each state (idle, swiping, dragging). override fun getMovementFlags(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder): Int { // The position i want to lock/halt if (list[viewHolder.adapterPosition].trim().isEmpty()){ return makeFlag(ItemTouchHelper.ACTION_STATE_IDLE, ItemTouchHelper.DOWN or ItemTouchHelper.UP) } // The position i want to lock/halt if (viewHolder.adapterPosition == list.size - 1){ return makeFlag(ItemTouchHelper.ACTION_STATE_IDLE, ItemTouchHelper.DOWN or ItemTouchHelper.UP) } // else enabling ACTION_STATE_DRAG return makeFlag(ItemTouchHelper.ACTION_STATE_DRAG, ItemTouchHelper.DOWN or ItemTouchHelper.UP or ItemTouchHelper.START or ItemTouchHelper.END) }

更多推荐

在 RecyclerView 中的特定位置拖放停止

本文发布于:2023-10-08 03:01:43,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1471313.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:拖放   位置   RecyclerView

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!