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ěonMoved
musíte aktualizovat všechny ostatní řádky. Můžete použítfromPos
atoPos
pro to. Více o tom níže -
Když vyplníte
RecyclerView
s údaji si je musíte objednatorder
pole
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