Vous avez besoin d'un champ dans chaque ligne de la base de données pour stocker la commande. Ensuite, vous devez implémenter ces fonctionnalités :
-
Lors de l'insertion d'une nouvelle ligne (lorsque vous insérez un nouvel objet dans la base de données), vous devez définir l'ordre champ à l'entier suivant. Vous pouvez obtenir la valeur maximale actuelle (avec la fonction sql
MAX) puis faites simplement +1 -
Lorsque l'utilisateur déplace un élément dans
RecyclerView, dans la méthodeonMovedvous devez mettre à jour toutes les autres lignes. Vous pouvez utiliser lefromPosettoPospour ça. Plus d'informations ci-dessous -
Lorsque vous remplissez votre
RecyclerViewavec les données dont vous avez besoin pour les commander parorderchamp
Explication de la 2ème fonctionnalité à implémenter :en gros, vous devez mettre à jour toutes les lignes dans l'ordre entre fromPos et toPos :
-
si l'utilisateur a déplacé l'élément vers le haut (par exemple de la position 4 à la position 2), vous devez :
- obtenir le champ de clé primaire de l'élément actuel (en utilisant la position 4)
- modifier toutes les lignes entre la commande 2 et commandez 4 :donc changer 2 -> 3 et 3 -> 4
- Modifier l'ordre actuel des articles (en utilisant la clé primaire du premier point) en
toPos:dans cet exemple, changez l'ordre actuel des articles en 2
-
si l'utilisateur a déplacé l'élément vers le bas (par exemple de la position 2 à 4), vous devez :
- obtenir le champ de clé primaire de l'élément actuel (en utilisant la position 2)
- changer toutes les lignes entre l'ordre 2 et l'ordre 4 :donc changer 4 -> 3 et 3 -> 2
- modifier l'ordre actuel des articles (en utilisant la clé primaire du premier point) en
toPos:dans cet exemple, changez l'ordre actuel des articles en 4
J'espère que ça aide un peu