V každém řádku DB potřebujete pole pro uložení objednávky. Pak musíte implementovat tyto funkce:
-
Při vkládání nového řádku (když vkládáte nový objekt do databáze) je potřeba nastavit pořadí pole na další int. Můžete získat aktuální maximální hodnotu (pomocí sql funkce
MAX) a poté jednoduše dejte +1 -
Když uživatel přesune položku v
RecyclerView, v metoděonMovedmusíte aktualizovat všechny ostatní řádky. Můžete použítfromPosatoPospro to. Více o tom níže -
Když vyplníte
RecyclerViews údaji si je musíte objednatorderpole
Vysvětlení 2. funkce, která má být implementována:v podstatě musíte aktualizovat všechny řádky s pořadím mezi fromPos a toPos :
-
pokud uživatel přesunul položku nahoru (například z pozice 4 na 2), musíte:
- získáte pole primárního klíče aktuální položky (pomocí pozice 4)
- změnit všechny řádky mezi objednávkou 2 a objednejte 4 :tak změňte 2 -> 3 a 3 -> 4
- Změnit aktuální pořadí položek (pomocí primárního klíče prvního bodu) na
toPos:v tomto příkladu změňte aktuální pořadí položek na 2
-
pokud uživatel přesunul položku dolů (například z pozice 2 na 4), musíte:
- získáte pole primárního klíče aktuální položky (pomocí pozice 2)
- změňte všechny řádky mezi objednávkou 2 a 4:takže změňte 4 -> 3 a 3 -> 2
- změňte aktuální pořadí položek (pomocí primárního klíče prvního bodu) na
toPos:v tomto příkladu změňte aktuální pořadí položek na 4
Doufám, že to trochu pomůže