做动画网站去哪采集,绵阳东原建设工程有限公司网站,wordpress 说说,通信部门网站备案证明本文首发于公众号“AntDream”#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注#xff0c;和我一起每天进步一点点 要实现这个拖动重排序功能#xff0c;主要是用到了RecycleView的ItemTouchHelper类
首先是定义一个接口
interface ItemTouchHelperAdapter … 本文首发于公众号“AntDream”欢迎微信搜索“AntDream”或扫描文章底部二维码关注和我一起每天进步一点点 要实现这个拖动重排序功能主要是用到了RecycleView的ItemTouchHelper类
首先是定义一个接口
interface ItemTouchHelperAdapter {fun onItemMove(fromPosition: Int, toPosition: Int)
}然后我们的Adapter里面要实现这个接口
import androidx.recyclerview.widget.RecyclerView
import java.util.*class MyAdapter(private val items: MutableListString) : RecyclerView.AdapterMyAdapter.ViewHolder(), ItemTouchHelperAdapter {// ... ViewHolder and other methods ...override fun onItemMove(fromPosition: Int, toPosition: Int) {if (fromPosition toPosition) {for (i in fromPosition until toPosition) {Collections.swap(items, i, i 1)}} else {for (i in fromPosition downTo toPosition 1) {Collections.swap(items, i, i - 1)}}notifyItemMoved(fromPosition, toPosition)}
}实现ItemTouchHelper的Callback接口方法
class SimpleItemTouchHelperCallback(private val adapter: ItemTouchHelperAdapter) : ItemTouchHelper.Callback() {override fun isLongPressDragEnabled() trueoverride fun isItemViewSwipeEnabled() falseoverride fun getMovementFlags(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder): Int {//这里是水平拖动val dragFlags ItemTouchHelper.LEFT or ItemTouchHelper.RIGHTreturn makeMovementFlags(dragFlags, 0)}override fun onMove(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder): Boolean {adapter.onItemMove(viewHolder.adapterPosition, target.adapterPosition)return true}override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {// do nothing}
}其中控制拖动方向的主要是在getMovementFlags方法中的dragFlags参数
如果是水平拖动则用
ItemTouchHelper.LEFT or ItemTouchHelper.RIGHT如果是竖直方向上拖动则是用
ItemTouchHelper.UP or ItemTouchHelper.DOWN最后绑定到我们的RecycleView上
val adapter MyAdapter(myDataset)
val recyclerView findViewByIdRecyclerView(R.id.my_recycler_view)
recyclerView.adapter adapterval callback SimpleItemTouchHelperCallback(adapter)
val touchHelper ItemTouchHelper(callback)
touchHelper.attachToRecyclerView(recyclerView)完成以上的步骤就瞬间实现了让RecycleView支持拖动重排序的功能 欢迎关注我的公众号查看更多精彩文章