Du skal bruge et felt i hver DB-række til at gemme ordren. Så skal du implementere disse funktioner:
-
Ved ny rækkeindsættelse (når du indsætter et nyt objekt i databasen) skal du indstille rækkefølgen felt til næste int. Du kan få den aktuelle maks. værdi (med sql-funktionen
MAX
) og derefter blot +1 -
Når brugeren flytter et element i
RecyclerView
, i metodenonMoved
du skal opdatere alle andre rækker. Du kan brugefromPos
ogtoPos
for det. Mere om det nedenfor -
Når du udfylder din
RecyclerView
med data, du skal bruge for at bestille dem efterorder
felt
Forklaring af 2. funktion, der skal implementeres:grundlæggende skal du opdatere alle rækker med rækkefølge mellem fromPos
og toPos
:
-
hvis brugeren flyttede elementet op (for eksempel fra position 4 til 2), skal du:
- hent primært nøglefelt for det aktuelle element (ved hjælp af position 4)
- ændre alle rækker mellem ordre 2 og bestil 4 :så skift 2 -> 3 og 3 -> 4
- Skift den aktuelle varerækkefølge (ved hjælp af primærnøgle til første punkt) til
toPos
:i dette eksempel ændres den aktuelle varerækkefølge til 2
-
hvis brugeren flyttede elementet ned (for eksempel fra position 2 til 4), skal du:
- hent primært nøglefelt for det aktuelle element (ved hjælp af position 2)
- ændre alle rækker mellem rækkefølge 2 og rækkefølge 4:så skift 4 -> 3 og 3 -> 2
- ændre den aktuelle varerækkefølge (ved at bruge den primære nøgle til det første punkt) til
toPos
:i dette eksempel ændres den aktuelle varerækkefølge til 4
Håber det hjælper lidt