SQLite
 sql >> Datenbank >  >> RDS >> SQLite

Speichern Sie die neue Position von RecyclerView-Elementen in SQLite, nachdem sie gezogen und abgelegt wurden

Sie benötigen ein Feld in jeder DB-Zeile zum Speichern der Bestellung. Dann müssen Sie diese Funktionen implementieren:

  • Beim Einfügen einer neuen Zeile (wenn Sie ein neues Objekt in die Datenbank einfügen) müssen Sie die Reihenfolge festlegen Feld zum nächsten int. Sie können den aktuellen Maximalwert abrufen (mit der SQL-Funktion MAX ) und geben Sie dann einfach +1

  • Wenn der Benutzer ein Element in RecyclerView verschiebt , in der Methode onMoved Sie müssen alle anderen Zeilen aktualisieren. Sie können den fromPos verwenden und toPos dafür. Mehr dazu weiter unten

  • Wenn Sie Ihre RecyclerView füllen mit Daten, die Sie per order bestellen müssen Feld


Erläuterung der zweiten zu implementierenden Funktion:Grundsätzlich müssen Sie alle Zeilen mit der Reihenfolge zwischen fromPos aktualisieren und toPos :

  • Wenn der Benutzer das Element nach oben verschoben hat (z. B. von Position 4 auf 2), müssen Sie:

    1. Primärschlüsselfeld des aktuellen Elements abrufen (unter Verwendung von Position 4)
    2. Ändere alle Zeilen zwischen Auftrag 2 und bestellen Sie 4 :also ändere 2 -> 3 und 3 -> 4
    3. Ändere die aktuelle Artikelreihenfolge (unter Verwendung des Primärschlüssels des ersten Punkts) zu toPos :Ändern Sie in diesem Beispiel die aktuelle Elementreihenfolge auf 2
  • Wenn der Benutzer das Element nach unten verschoben hat (z. B. von Position 2 auf 4), müssen Sie:

    1. Primärschlüsselfeld des aktuellen Elements abrufen (unter Verwendung von Position 2)
    2. Ändere alle Zeilen zwischen Auftrag 2 und Auftrag 4:also ändere 4 -> 3 und 3 -> 2
    3. Ändere die aktuelle Artikelreihenfolge (unter Verwendung des Primärschlüssels des ersten Punkts) in toPos :Ändern Sie in diesem Beispiel die aktuelle Elementreihenfolge auf 4


Hoffe es hilft ein wenig