Wie RecyclerView items per drag&drop (UP DOWN) ordnen?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Wie RecyclerView items per drag&drop (UP DOWN) ordnen?

    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:

    Java-Quellcode

    1. ItemTouchHelper(object : ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP.or(ItemTouchHelper.DOWN), ItemTouchHelper.LEFT.or(ItemTouchHelper.RIGHT)) {
    2. override fun onMove(
    3. recyclerView: RecyclerView,
    4. sourceHolder: RecyclerView.ViewHolder,
    5. destinationHolder: RecyclerView.ViewHolder
    6. ): Boolean {
    7. val posOld = sourceHolder.adapterPosition
    8. val posNew = destinationHolder.adapterPosition
    9. val note1 = adapter.getNoteAt(posOld)
    10. val note2 = adapter.getNoteAt(posNew)
    11. noteViewModel.delete(note1)
    12. noteViewModel.delete(note2)
    13. val prio1 = note1.priority
    14. note1.priority = note2.priority
    15. note2.priority = prio1
    16. noteViewModel.insert(note1)
    17. noteViewModel.insert(note2)
    18. return false
    19. }
    20. override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
    21. noteViewModel.delete(adapter.getNoteAt(viewHolder.adapterPosition))
    22. Toast.makeText(baseContext, "Note Deleted!", Toast.LENGTH_SHORT).show()
    23. }
    24. }
    25. ).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..
  • Hi,

    es gibt hier ein paar sehr hilfreiche Methoden die Dich bei der Implementierung unterstützen.
    getMovementFlags(RecyclerView, ViewHolder)
    onMove(RecyclerView, ViewHolder, ViewHolder)
    onSwiped(ViewHolder, int)
    isLongPressDragEnabled()
    isItemViewSwipeEnabled()

    Aber warum dass Rad noch mal neu erfinden?
    Anleitung und github repository findest Du unter ux5.de/Z2C34 :)