Eu costumava usar a biblioteca SwipeToDismiss , mas agora estou tentando migrar para o RecyclerView e as coisas não são tão óbvias, você conhece algum substituto para esta biblioteca? Alguma ideia de como implementá-lo do zero?
android
android-recyclerview
Viktor Yakunin
fonte
fonte
Respostas:
A partir da v22.2.0, a equipe de suporte do Android incluiu uma
ItemTouchHelper
classe que torna muito simples deslizar para dispensar e arrastar e soltar. Pode não ser tão completo quanto algumas das bibliotecas, mas vem diretamente da equipe do Android.Atualize seu build.gradle para importar v22.2. + Da biblioteca RecyclerView
Instancie um ItemTouchHelper com um SimpleCallback apropriado
** Observe que o SimpleCallback segue as direções que você deseja ativar para arrastar e soltar e as direções para as quais deseja ativar o deslize.
Anexe ao seu RecyclerView
fonte
viewHolder
.Aqui no Código, se o usuário deslizar para a esquerda, AlertDialog é exibido e se o usuário selecionar REMOVER, o item é excluído do banco de dados e a visualização de reciclagem é atualizada e se o usuário selecionar CANCELAR, a visualização de reciclagem é como está.
fonte
if (direction == ItemTouchHelper.LEFT) // if swipe left
pois oItemTouchHelper.SimpleCallback
é limitado apenas a essa direção de deslize. Se você quiser deslizar para a esquerda e para a direitaItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT)
, precisará verificar a direção.AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setOnCancelListener(new DialogInterface.OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { // stuff to put the item back } });
adapter.notifyItemChanged(position);
trouxe o item roubado de volta, em vez denotifyItemRemoved
- o que é mais lógico, imho.talvez você possa experimentar esta biblioteca:
https://github.com/daimajia/AndroidSwipeLayout
Atualização: acabei de encontrar outra boa biblioteca que você pode usar com o RecyclerView:
https://github.com/hudomju/android-swipe-to-dismiss-undo
fonte
Esta biblioteca pode ser útil. Você pode implementar
undo
emOnDissmiss
usosupertoast
fonte
OnTouchListener
inspiração para issoEu escrevi a biblioteca SwipeToDeleteRV que oferece suporte ao recurso deslizar para excluir-desfazer nas visualizações do reciclador. É baseado em ItemTouchHelper e muito fácil de usar.
Espero que possa ser útil para alguém que enfrenta os mesmos problemas.
Como exemplo, você pode definir a visualização do reciclador em um layout XML normalmente, além de alguns atributos opcionais:
Todos os atributos stdrv são opcionais. Se você não especificá-los, os padrões serão usados.
Em seguida, crie um adaptador que subclasse STDAdapter, certifique-se de chamar o construtor da superclasse. Algo assim:
}
Em seguida, certifique-se de fazer uma chamada para o
setupSwipeToDelete
método para configurar o recurso deslizar para excluir.swipe_directions
é a direção em que você permite que os itens sejam passados.Exemplo:
É isso aí! Para configurações mais avançadas (ou seja, definir mensagens de exclusão diferentes para itens diferentes, remover itens temporária e permanentemente, ...) consulte a página leia-me do projeto.
fonte