我如何通过上下滑动来重新排列Recyclerview物品的顺序?

时间:2019-02-19 11:20:07

标签: kotlin android-recyclerview recycler-adapter recyclerview-layout

我已使用this example来尝试回收者视图。在此示例中,通过设置显式优先级编号来解决排序。

我想通过上下滑动每个手指来订购这些物品。

因此,我通过向onMove()方法中的onCreate()实现中添加代码来增强了示例:

ItemTouchHelper(object : ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP.or(ItemTouchHelper.DOWN), ItemTouchHelper.LEFT.or(ItemTouchHelper.RIGHT)) {

            override fun onMove(
                recyclerView: RecyclerView,
                sourceHolder: RecyclerView.ViewHolder,
                destinationHolder: RecyclerView.ViewHolder
            ): Boolean {

                val posOld = sourceHolder.adapterPosition
                val posNew = destinationHolder.adapterPosition

                val note1 = adapter.getNoteAt(posOld)
                val note2 = adapter.getNoteAt(posNew)

                noteViewModel.delete(note1)
                noteViewModel.delete(note2)

                val prio1 = note1.priority
                note1.priority = note2.priority
                note2.priority = prio1

                noteViewModel.insert(note1)
                noteViewModel.insert(note2)

                return true
            }

            override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
                noteViewModel.delete(adapter.getNoteAt(viewHolder.adapterPosition))
                Toast.makeText(baseContext, "Note Deleted!", Toast.LENGTH_SHORT).show()
            }
        }
        ).attachToRecyclerView(recycler_view)

如您所见,接口SimpleCallback的第一个参数为0,我用UP和DOWN手势代替,并在手动滑动的地方添加了代码。

我什么都没碰。通过应用上面的修改,我可以在设备上运行该应用程序,但是向上滑动和向下滑动不能吗?

我忘记了什么?有更简单的方法吗?

0 个答案:

没有答案