Você precisa de um campo em cada linha do banco de dados para armazenar o pedido. Então, você precisa implementar esses recursos:
-
Na inserção de nova linha (quando você insere um novo objeto no banco de dados), você precisa definir a ordem campo para o próximo int. Você pode obter o valor máximo atual (com a função sqlMAX
) e então simplesmente faça +1
-
Quando o usuário move um item emRecyclerView
, no métodoonMoved
você deve atualizar todas as outras linhas. Você pode usar ofromPos
etoPos
por isso. Mais sobre isso abaixo
-
Quando você preenche seuRecyclerView
com dados você precisa ordená-los pororder
campo
Explicação do 2º recurso a ser implementado:basicamente você precisa atualizar todas as linhas com ordem entre
fromPos
e toPos
:-
se o usuário moveu o item para cima (por exemplo, da posição 4 para 2), você precisa:
- obtenha o campo de chave primária do item atual (usando a posição 4)
- alterar todas as linhas entre o pedido 2 e peça 4 :então mude 2 -> 3 e 3 -> 4
- Alterar a ordem atual do item (usando a chave primária do primeiro ponto) para
toPos
:neste exemplo, altere a ordem do item atual para 2
-
se o usuário moveu o item para baixo (por exemplo, da posição 2 para a 4), você precisa:
- obter o campo de chave primária do item atual (usando a posição 2)
- altere todas as linhas entre a ordem 2 e a ordem 4:altere 4 -> 3 e 3 -> 2
- alterar a ordem do item atual (usando a chave primária do primeiro ponto) para
toPos
:neste exemplo, altere a ordem do item atual para 4
Espero ter ajudado um pouco