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 metodenonMoveddu måste uppdatera alla andra rader. Du kan användafromPosochtoPosför det. Mer om det nedan -
När du fyller i din
RecyclerViewmed data du behöver för att beställa dem genomorderfä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