Anda memerlukan bidang di setiap baris DB untuk menyimpan pesanan. Kemudian Anda perlu mengimplementasikan fitur-fitur itu:
-
Pada penyisipan baris baru (ketika Anda memasukkan objek baru ke dalam database), Anda perlu mengatur urutan bidang ke int berikutnya. Anda bisa mendapatkan nilai maks saat ini (dengan fungsi sql
MAX
) lalu lakukan +1 -
Saat pengguna memindahkan item di
RecyclerView
, dalam metodeonMoved
Anda harus memperbarui semua baris lainnya. Anda dapat menggunakanfromPos
dantoPos
untuk itu. Selengkapnya di bawah -
Saat Anda mengisi
RecyclerView
dengan data yang Anda butuhkan untuk memesannya denganorder
bidang
Penjelasan fitur ke-2 yang akan diterapkan:pada dasarnya Anda perlu memperbarui semua baris dengan urutan antara fromPos
dan toPos
:
-
jika pengguna memindahkan item ke atas (misalnya dari posisi 4 ke 2), Anda perlu:
- dapatkan bidang kunci utama dari item saat ini (menggunakan posisi 4)
- ubah semua baris di antara urutan 2 dan pesan 4 :jadi ubah 2 -> 3 dan 3 -> 4
- Ubah urutan item saat ini (menggunakan kunci utama dari poin pertama) menjadi
toPos
:dalam contoh ini ubah urutan item saat ini menjadi 2
-
jika pengguna memindahkan item ke bawah (misalnya dari posisi 2 ke 4) Anda perlu:
- dapatkan bidang kunci utama dari item saat ini (menggunakan posisi 2)
- ubah semua baris antara urutan 2 dan urutan 4:jadi ubah 4 -> 3 dan 3 -> 2
- ubah urutan item saat ini (menggunakan kunci utama dari poin pertama) menjadi
toPos
:dalam contoh ini ubah urutan item saat ini menjadi 4
Semoga sedikit membantu