sql >> Databáze >  >> RDS >> SQLite

Po přetažení uložte novou pozici položek RecyclerView v SQLite

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žít fromPos a toPos pro to. Více o tom níže

  • Když vyplníte RecyclerView s údaji si je musíte objednat order 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:

    1. získáte pole primárního klíče aktuální položky (pomocí pozice 4)
    2. změnit všechny řádky mezi objednávkou 2 a objednejte 4 :tak změňte 2 -> 3 a 3 -> 4
    3. 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:

    1. získáte pole primárního klíče aktuální položky (pomocí pozice 2)
    2. změňte všechny řádky mezi objednávkou 2 a 4:takže změňte 4 -> 3 a 3 -> 2
    3. 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




  1. Jak mohu změnit výchozí časový limit připojení Mysql při připojování přes python?

  2. Instalace Ruby gem mysql2 se nezdařila

  3. Spouštění souborů MySQL *.sql v PHP

  4. Jak importovat existující soubory *.sql v PostgreSQL 8.4?