Имате нужда от поле във всеки ред на DB за съхраняване на поръчката. След това трябва да внедрите тези функции:
-
При вмъкване на нов ред (когато вмъквате нов обект в базата данни) трябва да зададете порядъка поле към следващото int. Можете да получите текущата максимална стойност (с sql функция
MAX
) и след това просто направете +1 -
Когато потребителят премести елемент в
RecyclerView
, в методаonMoved
трябва да актуализирате всички останали редове. Можете да използватеfromPos
иtoPos
за това. Повече за това по-долу -
Когато попълните своя
RecyclerView
с данни, които трябва да ги поръчате поorder
поле
Обяснение на 2-ра функция, която трябва да бъде внедрена:по принцип трябва да актуализирате всички редове с ред между fromPos
и toPos
:
-
ако потребителят премести елемента нагоре (например от позиция 4 на 2), трябва да:
- получете полето за първичен ключ на текущия елемент (използвайки позиция 4)
- променете всички редове между ред 2 и поръчайте 4 :така че променете 2 -> 3 и 3 -> 4
- Променете текущата поръчка на артикули (използвайки първичен ключ от първата точка) на
toPos
:в този пример променете реда на текущите елементи на 2
-
ако потребителят премести елемента надолу (например от позиция 2 на 4), трябва да:
- получете полето за първичен ключ на текущия елемент (използвайки позиция 2)
- променете всички редове между ред 2 и ред 4:така че променете 4 -> 3 и 3 -> 2
- променете текущата поръчка на артикули (използвайки първичен ключ от първата точка) на
toPos
:в този пример променете реда на текущите елементи на 4
Надявам се да помогне малко