Quelle est la meilleure façon de procéder ?
Ajoutez une logique "sans fin" à votre propre implémentation de PagerAdapter
. Ou, si vous le souhaitez, essayez de créer une décoration. PagerAdapter
, la façon dont les EndlessAdapter
décore un Adapter
.
Ce dernier point risque d'être délicat, étant donné que PagerAdapter
est conçu pour que les pages soient des vues ou des fragments, et la gestion des fragments à l'intérieur de classes telles que FragmentPagerAdapter
est un peu effrayant.
Existe-t-il une bibliothèque qui s'occupe déjà de cela ?
Aucune à ma connaissance.
Principalement parce que le cas d'utilisation ne semble pas aussi convaincant. Avec un ListView
L'utilisateur peut faire défiler la liste, en parcourant des dizaines ou des centaines de lignes très rapidement. Il semble donc raisonnable d'utiliser "nous sommes arrivés à la fin" comme déclencheur pour charger davantage de données. Avec un ViewPager
Cependant, il faut généralement beaucoup plus de temps pour arriver à la fin, en particulier si vous n'utilisez pas la fonction PagerTabStrip
ou l'équivalent. Par conséquent, attendre que l'utilisateur arrive à la fin pour commencer à charger des données supplémentaires semble être ennuyeux pour l'utilisateur - vous avez eu tout ce temps pour aller chercher des données supplémentaires, mais vous ne l'avez pas utilisé.
Une autre solution consiste donc à enregistrer une ViewPager.OnPageChangeListener
avec votre ViewPager
. Quand onPageSelected()
et que vous vous considérez comme proche de la fin, lancez un AsyncTask
(ou autre) pour aller collecter des données supplémentaires. Le problème est qu'il faut alors mettre à jour les données utilisées par l'application PagerAdapter
et appeler notifyDataSetChanged()
sur cet adaptateur une fois que les données ont été mises à jour.