J'avais l'habitude d' utiliser la bibliothèque SwipeToDismiss mais maintenant j'essaye de migrer vers RecyclerView et les choses ne sont pas si évidentes, connaissez-vous des remplacements pour cette bibliothèque? Des idées pour le mettre en œuvre à partir de zéro?
android
android-recyclerview
Viktor Yakunin
la source
la source
Réponses:
À partir de la version 22.2.0, l'équipe de support Android a inclus une
ItemTouchHelper
classe qui simplifie le glissement pour rejeter et le glisser-déposer. Cela n'est peut-être pas aussi complet que certaines des bibliothèques, mais cela vient directement de l'équipe Android.Mettez à jour votre build.gradle pour importer la version 22.2. + De la bibliothèque RecyclerView
Instanciez un ItemTouchHelper avec un SimpleCallback approprié
** Notez que le SimpleCallback prend dans les directions que vous souhaitez activer le glisser-déposer et les directions que vous souhaitez activer le glissement.
Joindre à votre RecyclerView
la source
viewHolder
.Ici, dans Code, si l'utilisateur glisse vers la gauche, AlertDialog s'affiche et si l'utilisateur sélectionne SUPPRIMER, l'élément est supprimé de la base de données et la vue de recyclage est actualisée et si l'utilisateur sélectionne ANNULER, la vue de recyclage est telle qu'elle est.
la source
if (direction == ItemTouchHelper.LEFT) // if swipe left
de la direction car elleItemTouchHelper.SimpleCallback
est limitée à cette direction de balayage. Si vous voulez des balayages vers la gauche et vers la droite,ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT)
vous devez vérifier la direction.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);
ramené l'article glissé, plutôt quenotifyItemRemoved
- ce qui est plus logique à mon humble avis.peut-être que vous pourriez essayer cette bibliothèque:
https://github.com/daimajia/AndroidSwipeLayout
Mise à jour: je viens de trouver une autre bonne bibliothèque que vous pouvez utiliser avec RecyclerView:
https://github.com/hudomju/android-swipe-to-dismiss-undo
la source
Cette bibliothèque peut être utile.Vous pouvez implémenter
undo
en cours d'OnDissmiss
utilisationsupertoast
la source
OnTouchListener
inspiration par ceciJ'ai écrit la bibliothèque SwipeToDeleteRV qui prend en charge la fonction de balayage pour supprimer-annuler sur les vues de recycleur. Il est basé sur ItemTouchHelper et très facile à utiliser.
J'espère que cela peut être utile pour quelqu'un confronté aux mêmes problèmes.
À titre d'exemple, vous pouvez définir votre vue recycleur dans une mise en page XML comme normale, ainsi que certains attributs facultatifs:
Tous les attributs stdrv sont facultatifs. Si vous ne les spécifiez pas, les valeurs par défaut seront utilisées.
Créez ensuite un adaptateur qui sous-classe STDAdapter, assurez-vous d'appeler le constructeur de super classe. Quelque chose comme ça:
}
Assurez-vous ensuite de passer un appel à la
setupSwipeToDelete
méthode pour configurer la fonction de balayage pour supprimer.swipe_directions
est la direction dans laquelle vous autorisez le balayage des éléments.Exemple:
C'est tout! Pour des paramètres plus avancés (c.-à-d. Définir différents messages de suppression pour différents éléments, supprimer temporairement et définitivement des éléments, ...), veuillez consulter la page Lisez-moi du projet.
la source