2017-09-27 4 views
0

J'ai un RecyclerView.Adapter dans un RecycleView qui appartient à un Activity. Ce Activity contient un bouton. Cet adaptateur contient des lignes qui ont des cases à cocher. Je voudrais cacher les cases à cocher de toutes les lignes quand on clique sur ce bouton. J'utilise le modèle de ViewHolder dans mon adaptateur.Cacher les cases à cocher lorsque le bouton est cliqué

Je pense à cette solution:

passe dans mon activité en tant que paramètre au constructeur de l'adaptateur. Cette activité contient une méthode pour vérifier si le bouton a été cliqué. Et lorsque ce bouton est cliqué, la valeur change et appelle notifyDataSetChanged(). Ainsi, l'adaptateur affiche/cache les cases à cocher.

Basé sur une approche MVP est-ce une bonne idée?

Répondre

0

solutions possibles:

  • Chaque porteur de vue est lié à une classe de modèle. Dans cette classe de modèle, vous pouvez contenir un booléen qui indique si le titulaire de vue correspondant doit afficher la case à cocher. Lorsque vous cliquez sur le bouton, vous pouvez effectuer une itération sur les éléments qui devraient être affectés et remplacer le booléen par true. Puis notifier les données modifiées sur les éléments concernés.

  • L'adaptateur peut contenir une valeur booléenne qui indique si toutes les cases doivent être masquées. Chaque détenteur de vue recevra l'adaptateur comme référence lors de la création (et non l'activité - qui est mauvaise) et vérifiera ce booléen si afficher ou masquer la case à cocher. L'adaptateur booléen sera mis à jour lorsque le bouton est cliqué, puis déclenchera une modification des données de notification.

+0

Dans le premier cas, l'activité crée et contient une instance de l'adaptateur? De cette manière, le bouton peut appeler un menthod adaptateur qui itère sur les éléments de liaison. – learner

+0

Oui. Tenez une instance de l'adaptateur, puis utilisez ses fonctionnalités en cas de besoin (lorsque le bouton a cliqué par exemple). – Idanatz