Necesita un campo en cada fila de la base de datos para almacenar el pedido. Luego, debe implementar esas características:
-
En la inserción de una nueva fila (cuando inserta un nuevo objeto en la base de datos), debe establecer el orden campo al siguiente int. Puede obtener el valor máximo actual (con la función sql
MAX
) y luego simplemente haz +1 -
Cuando el usuario mueve un elemento en
RecyclerView
, en el métodoonMoved
debe actualizar todas las demás filas. Puedes usar elfromPos
ytoPos
para eso. Más sobre eso a continuación -
Cuando llenas tu
RecyclerView
con datos necesitas ordenarlos pororder
campo
Explicación de la segunda función que se implementará:básicamente, debe actualizar todas las filas con orden entre fromPos
y toPos
:
-
si el usuario movió el elemento hacia arriba (por ejemplo, de la posición 4 a la 2), debe:
- obtener el campo de clave principal del elemento actual (usando la posición 4)
- cambiar todas las filas entre el orden 2 y pedir 4 :entonces cambia 2 -> 3 y 3 -> 4
- Cambiar el orden de los artículos actuales (usando la clave principal del primer punto) a
toPos
:en este ejemplo, cambie el orden actual de los elementos a 2
-
si el usuario movió el elemento hacia abajo (por ejemplo, de la posición 2 a la 4), debe:
- obtener el campo de clave principal del elemento actual (usando la posición 2)
- cambie todas las filas entre el orden 2 y el orden 4:cambie 4 -> 3 y 3 -> 2
- cambiar el orden de los artículos actuales (usando la clave principal del primer punto) a
toPos
:en este ejemplo, cambie el orden actual de los artículos a 4
Espero que te ayude un poco