Ich spiele gerade mit folgendem Beispiel rum. Dort ist eine RecyclerView wo die Reihenfolge der RecyclerView items mittels einer Priorität festgelegt wird. Ich wollte das Beispiel soweit erweitern, dass man die Reihenfolge der RecyclerView items durch hoch und runter swipen ändert (Wie wenn man eine andere Systemsprache einstellen will).
Ursprünglich war
ItemTouchHelper(object : ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT.or(ItemTouchHelper.RIGHT))...für Hoch und Runter 0 da UP and DOWN deaktiviert war. Ich habe das UP und DOWN swipen nun erweitert und die onMove() versucht sinnvoll auszufüllen:
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 false
}
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)
Alles anzeigen
Wenn ich nun die App starte kann ich zwar nach wie vor die Items seitlich weglöschen, aber jegliches vertikales Swipen geht nicht. Ich weiß das tauschen der Note objekte ist dirty gelöst. Ich will nur das vertikale swipen erstmal ausprobieren...Was mache ich falsch?Thnx schonmal für Hinweise..