Ajouter et Supprimer dynamiquement des Fragments De FragmentPagerAdapter
J'ai un FragmentPagerAdapter pour un viewPager Qui, initialement, n'a qu'un seul Fragment. Je veux ajouter dynamiquement un nouveau Fragment de l'adaptateur lorsque l'utilisateur effectue de la droite vers la gauche, et de façon dynamique retirer un Fragment lorsque l'utilisateur effectue de gauche à droite.J'ai essayé d'utiliser cette bibliothèque https://github.com/commonsguy/cwac-pager mais dans cette bibliothèque, nous avons une option pour ajouter et supprimer des fragments sur les clics de bouton. J'ai essayé d'ajouter un OnPageChangeListener à la viewpager mais les méthodes de rappel ( onPageScrolled et onPageScrollStateChanged) sont appelés plus d'une fois ce qui résulte en outre de plus d'un fragment à l'FragmentPagerAdapter. Merci donc de jeter une certaine lumière sur la façon de le faire.
OriginalL'auteur dora | 2013-11-19
Vous devez vous connecter pour publier un commentaire.
@dora: je pense que dans ton cas FragmentStatePagerAdapter va vous aider. J'ai mentionné son utilisation ci-dessous selon ma compréhension.J'espère que ça va vous aider dans la prise de décision.
Il y a deux façons de mettre en œuvre ViewPager:
• FragmentStatePagerAdapter
• FragmentPagerAdapter
FragmentStatePagerAdapter classe consomme moins de mémoire, parce qu'elle détruit des fragments, dès qu'ils ne sont pas visibles pour l'utilisateur, en gardant seulement sauvé de l'état de fragment
FragmentPagerAdapter: quand il y a de moins en moins le nombre de fragments. Mais à l'aide de AndroidFragmentPagerAdapter pour un grand nombre de fragments entraînerait agitée et lag UX.
Nombre de page tenue par un viewPager?
Le nombre d'éléments que tout ViewPager va conserver est fixé par le setOffscreenPageLimit() la méthode. La valeur par défaut pour l'écran de la page de la limite est de 3. Cela signifie ViewPager permettra de suivre la page actuellement visible, l'une à gauche et une à droite. Le nombre de suivis des pages est toujours centré autour de la page actuellement visible.
Veuillez suivre ce lien pour code: http://www.truiton.com/2013/05/android-fragmentpageradapter-example/
OriginalL'auteur Aditya
Je sais que ce post est vieux, mais j'ai du mal à comprendre cela, donc je vais y répondre de toute façon.
Vous souhaitez utiliser
FragmentStatePagerAdapter
et remplacergetItemPosition()
. Créer une liste de choses que vous voulez transmettre à l'fragment, appelnotifyDataSetChanged()
, et vous êtes tous ensemble!Voici la carte:
Et voici le fragment:
Ajouter, c'est facile maintenant, où est le cas de le supprimer?
est repeuplement ne nuit pas à la performance?
Il ne et depuis, j'ai déménagé sur. Je vais maintenant utiliser un classe personnalisée qui prend en charge le déplacement des éléments autour. Si vous appelez
notifyDataSetChanged()
, il ne fera que d'ajouter ou de supprimer des fragments en tant que de besoin. Cela signifie que chaque fragment doit gérer la mise à jour de lui-même si, comme l'avertir de ne pas actualiser les fragments. Si vous utilisez quelque chose comme Firebase ou de la Salle, vous serez amende.OriginalL'auteur SUPERCILEX
Autant que je sache, ça ne sera pas pris en charge par toute
PagerAdadpter
. Il ne va certainement pas être pris en charge parArrayPagerAdapter
. La page doit exister, sinon vous ne pouvez pas glisser. Vous ne pouvez pas balayer d'abord, puis ajouter la page plus tard.De plus, je n'ai jamais trouvé un cas d'utilisation pour votre proposition de modèle qui ne peut pas être traitée par l' page être dans la carte, mais pas remplissage la page (c'est à dire, quel que soit le travaux coûteux, c'est que vous semblez être en essayant d'éviter) jusqu'à ce que le balayage commence.
suis en train de mettre en œuvre un calendrier, donc à chaque fois que l'utilisateur effectue de droite à gauche,il va à la semaine prochaine" --
ViewPager
n'est pas bien adapté pour ce rôle, comme il existe un nombre infini de semaines dans l'avenir, et un whole lotta semaines dans le passé.je n'ai pas besoin pour naviguer vers le passé.tout ce que je besoin pour être en mesure de naviguer actuel de l'heure et de l'avenir.donc merci de m'aider si il y a moyen pour qu'il
De nouveau, je ne voudrais pas utiliser
ViewPager
, mais le déploiement de quelque chose d'autre à l'aide de gestes.OriginalL'auteur CommonsWare