Ajouter / Supprimer des pages à ViewPager dynamiquement
Je voudrais ajouter ou de supprimer des pages de mon point de vue pager de façon dynamique. Est-ce possible?
- Pas encore de. Je n'ai pas eu le temps de l'essayer. La Solution fournie par Paresh ne fonctionne pas, mais Zsombor peut. Je vais vous laisser savoir si je trouve quoi que ce soit.
- Envisagez de cette réponse
Vous devez vous connecter pour publier un commentaire.
Oui, depuis ViewPager devient l'enfant du point de Vue d'une PagerAdapter, vous pouvez ajouter de nouvelles pages /supprimer des pages, et d'appel .notifyDataSetChanged() pour le recharger.
Oui. Vous pouvez ajouter ou supprimer des points de vue de manière dynamique à la PagerAdapter qui est de leur fournir les ViewPager et appel
notifyDataSetChanged()
de la PagerAdapter pour alerter l'touchées ViewPager sur les changements. Toutefois, lorsque vous le faites, vous devez remplacer lagetItemPosition(Object)
de la PagerAdapter, qui leur dit que les articles qu'ils sont actuellement ont changé de position. Par défaut, cette fonction est réglée àPOSITION_UNCHANGED
, de sorte que le ViewPager ne mettra pas à jour immédiatement si vous n'avez pas surcharger cette méthode. Par exemple,Bien que, si vous souhaitez simplement ajouter ou supprimer de la vue temporairement de l'affichage, mais pas à partir de l'ensemble de données de la PagerAdapter, essayez d'utiliser
setPrimaryItem(ViewGroup, int, Object)
pour aller à un point de vue particulier dans le PagerAdapter données etdestroyItem(ViewGroup, int, Object)
pour la suppression d'une vue à partir de l'écran d'affichage.Oui, le code devrait ressembler à ceci:
Mais il y a un bug. Si l'Élément courant est 0, et de supprimer la page 0, il ne sera pas de rafraîchissement de l'écran instantanément, je n'ai pas trouvé une solution pour cela.
mListViews
serait la Liste de points de Vue dans la classemyPagerAdapter
qui permettraient d'étendreFragmentPagerAdapter
depuis que serait l'endroit idéal pour stocker tous les points de vue (pages) pour le ViewPagermPager
Je suis sûr que vous avez créé une carte en étendant PageAdapter, donc il y a une méthode:
Pour exemple détaillé pour le même, il suffit d'aller dans cet exemple.
Voici une solution alternative à cette question. Ma carte:
Code pour supprimer et ajouter dynamiquement
Après les conseils de Péri Hartman, il a commencé à travailler, après j'ai mis
null
à ViewPager de l'adaptateur et de mettre la carte à nouveau après le point de vue supprimé. Avant cela, la page 0 n'a pas montré son contenu de la liste.Première:remplacement de la pagerAdapter méthode "getItemPosition"
Deuxième:supprimer les données se lier avec l'adaptateur.et l'appel de l'adaptateur.notifydatachanged
Cette solution fonctionne bien pour la mesure:
Veuillez noter:
Item
classe doit contenir une mise en œuvre correspondant, pourequals
ethashCode
méthodesItemView
classe doit contenir les méthodes getter et setter pour votreItem
objet.Sur la base d'autres réponses et d'autres ressources que j'ai terminé avec ce code.
CustomPagerAdapter:
MainActivity:
De supprimer les pages:
MainFragment:
SecondaryFragment a le même code.
Les modèles sont simples ViewPager/Fragment de mises en page avec
android.support.v4.view.ViewPager
avec l'idcontainer
et le FragmentTextView
avec l'idsection_label
.Ressources: