Il est possible d'utiliser des éléments de liste extensibles avec le nouveau RecyclerView? Vous aimez ExpandableListView?
android
android-recyclerview
Dariusz Rusin
la source
la source
Réponses:
C'est simple à faire avec les LayoutManagers de stock, tout dépend de la façon dont vous gérez votre adaptateur.
Lorsque vous souhaitez développer une section, vous ajoutez simplement de nouveaux éléments à votre adaptateur après l'en-tête. N'oubliez pas d'appeler notifyItemRangeInserted lorsque vous faites cela. Pour réduire une section, vous supprimez simplement les éléments pertinents et appelez notifyItemRangeRemoved (). Pour toute modification de données notifiée de manière appropriée, la vue du recycleur animera les vues. Lors de l'ajout d'éléments, une zone à remplir avec les nouveaux éléments est créée, les nouveaux éléments disparaissant. La suppression est l'inverse. Tout ce que vous avez à faire en plus de l'adaptateur est de styliser vos vues pour transmettre la structure logique à l'utilisateur.
Mise à jour: Ryan Brooks a maintenant écrit un article sur la façon de procéder.
la source
Obtenez l'exemple d'implémentation de code à partir d' ici
Définir ValueAnimator dans onClick of ViewHolder
Voici le code final
la source
ExpandableListView
", car le contenu développé dans ce cas est une liste elle-même avec des éléments provenant de l'adaptateur. Il s'agit d'une solution dégénérée avec un seul élément autorisé en tant qu'enfant dans le groupe.https://github.com/gabrielemariotti/cardslib
Cette bibliothèque a une implémentation d'une liste extensible avec une vue de recyclage (reportez-vous à l'application de démonstration sous «CardViewNative» -> «Liste, grille et RecyclerView» -> «Cartes extensibles»). Il a également beaucoup d'autres combinaisons intéressantes de cartes / listes.
la source
Quelqu'un s'est plaint du fait que la solution mentionnée ci-dessus n'est pas utilisable avec une vue de liste en tant que contenu extensible. Mais il existe une solution simple: créez une vue de liste et remplissez cette vue de liste manuellement avec vos lignes .
Solution pour les paresseux: il existe une solution simple si vous ne voulez pas trop changer votre code. Utilisez simplement votre adaptateur manuellement pour créer des vues et les ajouter au fichier
LinearLayout
.Voici l'exemple:
fonctions d'assistance: getThemeReference
classe d'assistance: ExpandUtils
Kavin Varnan postet déjà comment animer une mise en page ... Mais si vous voulez utiliser ma classe, n'hésitez pas à le faire, j'ai posté un résumé: https://gist.github.com/MichaelFlisar/738dfa03a1579cc7338a
la source
recyclerview
et vous pouvez développer / masquer cette vue imbriquée et utiliser toutes les optimisations durecyclerview
Vous pouvez utiliser ExpandableLayout qui ressemble à une CheckBox d'animation de développement / réduction fluide, vous pouvez donc l'utiliser comme CheckBox dans ListView et RecyclerView.
https://github.com/KyoSherlock/ExpandableLayout
la source
Ceci est l'exemple de code pour ce qui est mentionné par @TonicArtos pour ajouter et supprimer des éléments et pour l'animer tout en faisant, ceci est tiré de RecyclerView Animations et de l' exemple GitHub
1) Ajoutez un auditeur dans votre onCreateViewHolder () pour vous inscrire à onClick
2) Créez votre OnClickListener personnalisé dans votre adaptateur
3) Ajoutez votre addItem () et deleteItem ()
4) Si votre RecyclerViewAdapter n'est pas dans la même activité que Recycler View , transmettez l'instance de recyclerView à l'adaptateur lors de la création
5) itemList est un ArrayList de type mObject qui aide à maintenir les états de l'élément (Ouvrir / Fermer), le nom, le type d'élément (subItems / mainItem) et définir le thème en fonction des valeurs
la source