SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Przechowuj nową pozycję elementów RecyclerView w SQLite po przeciągnięciu i upuszczeniu

Potrzebujesz pola w każdym wierszu bazy danych do przechowywania zamówienia. Następnie musisz zaimplementować te funkcje:

  • Przy wstawianiu nowego wiersza (gdy wstawiasz nowy obiekt do bazy danych) musisz ustawić kolejność pole do następnego int. Możesz uzyskać aktualną wartość maksymalną (za pomocą funkcji sql MAX ), a potem po prostu +1

  • Gdy użytkownik przeniesie element w RecyclerView , w metodzie onMoved musisz zaktualizować wszystkie pozostałe wiersze. Możesz użyć fromPos i toPos za to. Więcej na ten temat poniżej

  • Kiedy wypełnisz swój RecyclerView z danymi, które musisz zamówić przez order pole


Wyjaśnienie drugiej funkcji, która ma zostać zaimplementowana:w zasadzie musisz zaktualizować wszystkie wiersze z kolejnością między fromPos i toPos :

  • jeśli użytkownik przeniósł element w górę (na przykład z pozycji 4 na 2), należy:

    1. Pobierz pole klucza głównego bieżącego elementu (używając pozycji 4)
    2. zmień wszystkie wiersze między kolejnością 2 i zamów 4 :więc zmień 2 -> 3 i 3 -> 4
    3. Zmień bieżącą kolejność pozycji (przy użyciu klucza podstawowego pierwszego punktu) na toPos :w tym przykładzie zmień bieżącą kolejność pozycji na 2
  • jeśli użytkownik przeniósł element w dół (na przykład z pozycji 2 do 4), należy:

    1. Pobierz pole klucza głównego bieżącego elementu (używając pozycji 2)
    2. zmień wszystkie wiersze między porządkiem 2 a porządkiem 4:więc zmień 4 -> 3 i 3 -> 2
    3. zmień bieżącą kolejność pozycji (przy użyciu klucza podstawowego pierwszego punktu) na toPos :w tym przykładzie zmień bieżącą kolejność pozycji na 4


Mam nadzieję, że to trochę pomoże




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 11 sposobów na znalezienie zduplikowanych wierszy, ignorując klucz podstawowy w SQLite

  2. Transakcja SQLite

  3. Android Studio 3.0 canary 1:błąd składni SQL

  4. SQLite POMIĘDZY

  5. Połączenie wewnętrzne SQLite