Utilisation ItemTouchHelper pour Glisser À Rejeter avec un autre affichage de la Vue derrière le glissée hors
J'ai un RecyclerView et vous souhaitez permettre à mes utilisateurs d'utiliser un mouvement de balayage pour supprimer des éléments de la liste. Mais comme on le sait par d'autres applications (par exemple Gmail), j'ai envie de montrer une icône de suppression derrière elle, de sorte que mon savoir aux utilisateurs que le balayage des résultats dans un supprimer. Cependant, je ne peux pas trouver un moyen évident de le faire. Le ItemTouchHelper utilise le viewHolder.itemView, de sorte qu'il prend la ligne entière.
Mon code:
ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new
ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT) {
@Override
public boolean onMove(
final RecyclerView recyclerView,
final RecyclerView.ViewHolder viewHolder,
final RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(
final RecyclerView.ViewHolder viewHolder,
final int swipeDir) {
adapter.remove(viewHolder.getAdapterPosition());
}
};
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(
simpleItemTouchCallback
);
itemTouchHelper.attachToRecyclerView(itemsRecyclerView);
itemsRecyclerView.setLayoutManager(
new LinearLayoutManager(getContext())
);
itemsRecyclerView.setAdapter(adapter);
Quelqu'un de la colle si c'est possible? La seule chose que je peux imaginer est d'étendre le ItemTouchHelper /copier le code, et au lieu d'utiliser viewHolder.itemView-je prendre une vue identifié par un ID.
Vous devez vous connecter pour publier un commentaire.
Je l'ai fait avec la suite de la structure de mise pour le recycleur voir un élément:
Puis-je utiliser ce point de vue titulaire en vue de base titulaire dans mon adaptateur:
Dans mon ItemTouchHelper.Rappel de classe I d'étendre les méthodes suivantes comme ça:
Avec cette approche, vous utiliser un niveau dans des mises en page plus, mais enregistre-vous des problèmes avec le dessin sur la Toile. Aussi, vous pouvez sélectionner d'autres points de vue à l'intérieur de l'élément, par exemple enregistrer un qui a été touché et le retourner et d'avoir des enfants d'un élément aussi swipeable.
Fixation pour le recycleur vue:
utiliser le onChildDraw() la méthode de ItemTouchHelper - je avoir de travail avec une image et la couleur d'arrière-plan pour glisser vers la gauche et la droite avec différentes couleurs et les icônes:
96 f peut être remplacé par quelle que soit la distance à partir de la gauche/droite, vous souhaitez qu'il soit. Ce n'est pas parfait comme quand je suis en bas de 2 éléments dans l'adaptateur et j'ai supprimer un poste sur le canevas ne disparaît pas et reste jusqu'à ce que l'adaptateur est nouveau - travaillent à essayer de résoudre maintenant je vais mettre à jour si je trouve une solution complète, mais pour l'instant c'est ce que je pense que vous êtes la recherche pour.
onChildDraw
. Aussi, vous devez appelerbitmap.recycle()
. C'est une mauvaise gestion de la mémoire.