J'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:
...
xmlns:stdrv="http://schemas.android.com/apk/res-auto"
...
<io.huannguyen.swipetodeleterv.STDRecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
stdrv:border_color="@android:color/darker_gray" // specify things like border color, border width, etc.
stdrv:delete_view_background="#cccccc"
stdrv:delete_icon="@drawable/ic_archive"
stdrv:delete_icon_height="24dp"
stdrv:delete_icon_width="24dp"
stdrv:left_delete_icon_margin="32dp"
stdrv:delete_message="@string/delete_message"
stdrv:right_delete_icon_margin="32dp"
stdrv:delete_icon_color="#000000"
stdrv:has_border="true"/>
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:
public class SampleAdapter extends STDAdapter<String> {
public SampleAdapter(List<String> versionList) {
super(versionList);
}
}
Assurez-vous ensuite de passer un appel à la setupSwipeToDelete
méthode pour configurer la fonction de balayage pour supprimer.
mRecyclerView.setupSwipeToDelete(your_adapter_instance, swipe_directions);
swipe_directions
est la direction dans laquelle vous autorisez le balayage des éléments.
Exemple:
// Get your recycler view from the XML layout
mRecyclerView = (STDRecyclerView) findViewById(R.id.recycler_view);
LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext());
mRecyclerView.setLayoutManager(layoutManager);
mAdapter = new SampleAdapter(versions);
// allow swiping in both directions (left-to-right and right-to-left)
mRecyclerView.setupSwipeToDelete(mAdapter, ItemTouchHelper.LEFT|ItemTouchHelper.RIGHT);
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.