Bạn cần một trường trong mỗi hàng DB để lưu trữ đơn đặt hàng. Sau đó, bạn cần triển khai các tính năng đó:
-
Trên chèn hàng mới (khi bạn chèn một đối tượng mới vào cơ sở dữ liệu), bạn cần đặt thứ tự trường tới số nguyên tiếp theo. Bạn có thể nhận giá trị tối đa hiện tại (với hàm sql
MAX
) và sau đó chỉ cần thực hiện +1 -
Khi người dùng di chuyển một mục trong
RecyclerView
, trong phương thứconMoved
bạn phải cập nhật tất cả các hàng khác. Bạn có thể sử dụngfromPos
vàtoPos
cho điều đó. Thông tin thêm về điều đó bên dưới -
Khi bạn điền vào
RecyclerView
của mình với dữ liệu bạn cần để sắp xếp chúng theoorder
lĩnh vực
Giải thích
về tính năng thứ 2 sẽ được triển khai:về cơ bản bạn cần cập nhật tất cả các hàng có thứ tự giữa fromPos
và toPos
:
-
nếu người dùng di chuyển mục lên trên (ví dụ:từ vị trí 4 lên 2), bạn cần:
- lấy trường khóa chính của mục hiện tại (sử dụng vị trí 4)
- thay đổi tất cả các hàng giữa đơn hàng 2 và đặt hàng 4 :vì vậy thay đổi 2 -> 3 và 3 -> 4
- Thay đổi thứ tự mặt hàng hiện tại (sử dụng khóa chính của điểm đầu tiên) thành
toPos
:trong ví dụ này, thay đổi thứ tự mặt hàng hiện tại thành 2
-
nếu người dùng di chuyển mục xuống (ví dụ:từ vị trí 2 đến 4), bạn cần:
- lấy trường khóa chính của mục hiện tại (sử dụng vị trí 2)
- thay đổi tất cả các hàng giữa thứ tự 2 và thứ tự 4:vì vậy hãy thay đổi 4 -> 3 và 3 -> 2
- thay đổi thứ tự mặt hàng hiện tại (sử dụng khóa chính của điểm đầu tiên) thành
toPos
:trong ví dụ này, thay đổi thứ tự mặt hàng hiện tại thành 4
Hy vọng nó sẽ giúp được một chút