Du behöver ett fält i varje DB-rad för att lagra beställningen. Sedan måste du implementera dessa funktioner:
-
Vid infogning av ny rad (när du infogar ett nytt objekt i databasen) måste du ställa in ordningen fältet till nästa int. Du kan få det aktuella maxvärdet (med sql-funktionen
MAX
) och sedan helt enkelt +1 -
När användaren flyttar ett objekt i
RecyclerView
, i metodenonMoved
du måste uppdatera alla andra rader. Du kan användafromPos
ochtoPos
för det. Mer om det nedan -
När du fyller i din
RecyclerView
med data du behöver för att beställa dem genomorder
fältet
Förklaring av den andra funktionen som ska implementeras:i grund och botten måste du uppdatera alla rader i ordning mellan fromPos
och toPos
:
-
om användaren flyttade objektet uppåt (till exempel från position 4 till 2), måste du:
- hämta primärnyckelfält för aktuellt objekt (med position 4)
- ändra alla rader mellan order 2 och beställ 4 :så ändra 2 -> 3 och 3 -> 4
- Ändra aktuell artikelordning (med primärnyckeln för första punkten) till
toPos
:i detta exempel ändra aktuell artikelordning till 2
-
om användaren flyttade objektet nedåt (till exempel från position 2 till 4) måste du:
- hämta primärnyckelfält för aktuellt objekt (med position 2)
- ändra alla rader mellan ordning 2 och ordning 4:så ändra 4 -> 3 och 3 -> 2
- ändra aktuell artikelordning (med primärnyckeln för första punkten) till
toPos
:i det här exemplet ändra aktuell artikelordning till 4
Hoppas det hjälper lite