sql >> Database teknologi >  >> RDS >> SQLite

Gem ny position for RecyclerView-elementer i SQLite efter at være blevet trukket og slipt

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 metoden onMoved du skal opdatere alle andre rækker. Du kan bruge fromPos og toPos for det. Mere om det nedenfor

  • Når du udfylder din RecyclerView med data, du skal bruge for at bestille dem efter order 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:

    1. hent primært nøglefelt for det aktuelle element (ved hjælp af position 4)
    2. ændre alle rækker mellem ordre 2 og bestil 4 :så skift 2 -> 3 og 3 -> 4
    3. 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:

    1. hent primært nøglefelt for det aktuelle element (ved hjælp af position 2)
    2. ændre alle rækker mellem rækkefølge 2 og rækkefølge 4:så skift 4 -> 3 og 3 -> 2
    3. æ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




  1. Den midlertidige SQL Server-tabel forsvinder

  2. 2 måder at returnere rækker, der kun indeholder ikke-alfanumeriske tegn i MariaDB

  3. Hvad er den bedste løsning til pooling af databaseforbindelser i python?

  4. Hvordan ændrer man en database til postgresql med Symfony 2.0?