Dans les applications Android telles que Twitter (application officielle), lorsque vous rencontrez un ListView, vous pouvez le tirer vers le bas (et il rebondira lorsqu'il sera publié) pour actualiser le contenu.
Je me demande quelle est la meilleure façon, à votre avis, de mettre cela en œuvre?
Quelques possibilités auxquelles je pourrais penser:
- Un élément au-dessus de ListView - mais je ne pense pas que revenir à la position 1 de l'élément (basé sur 0) avec une animation sur ListView soit une tâche facile.
- Une autre vue en dehors de ListView - mais je dois prendre soin de déplacer la position de ListView vers le bas lorsqu'elle est tirée, et je ne suis pas sûr si nous pouvons détecter si les touches de glisser vers ListView font toujours vraiment défiler les éléments sur ListView.
Des recommandations?
PS Je me demande quand le code source officiel de l'application Twitter sera publié. Il a été mentionné qu'il serait publié, mais 6 mois se sont écoulés et nous n'en avons plus entendu parler depuis.
android
listview
android-listview
pull-to-refresh
Randy Sugianto «Yuku»
la source
la source
Réponses:
Enfin, Google a publié une version officielle de la bibliothèque pull-to-refresh!
Il est appelé
SwipeRefreshLayout
, à l'intérieur de la bibliothèque de support, et la documentation est ici :Ajouter en
SwipeRefreshLayout
tant que parent de vue qui sera traité comme un pull pour rafraîchir la mise en page. (J'ai prisListView
comme exemple, ça peut êtreView
comme çaLinearLayout
,ScrollView
etc.)Ajoutez un auditeur à votre classe
Vous pouvez également appeler
pullToRefresh.setRefreshing(true/false);
selon vos besoins.MISE À JOUR
Les bibliothèques de support Android sont obsolètes et ont été remplacées par AndroidX. Le lien vers la nouvelle bibliothèque se trouve ici .
De plus, vous devez ajouter la dépendance suivante à votre projet:
OU
Vous pouvez aller dans Refactor >> Migrer vers AndroidX et Android Studio gérera les dépendances pour vous.
la source
J'ai essayé d'implémenter un composant pull to refresh, il est loin d'être complet mais montre une implémentation possible, https://github.com/johannilsson/android-pulltorefresh .
La logique principale est implémentée dans
PullToRefreshListView
cette extensionListView
.En interne, il contrôle le défilement d'une vue d'en-tête à l'aide deLe widget est maintenant mis à jour avec la prise en charge de la version 1.5 et ultérieure, veuillez lire le fichier README pour la prise en charge 1.5.smoothScrollBy
(API niveau 8).Dans vos mises en page, vous l'ajoutez simplement comme ceci.
la source
J'ai également implémenté une bibliothèque PullToRefresh robuste, open source, facile à utiliser et hautement personnalisable pour Android. Vous pouvez remplacer votre ListView par le PullToRefreshListView comme décrit dans la documentation sur la page du projet.
https://github.com/erikwt/PullToRefresh-ListView
la source
Je pense que la façon la plus simple est fournie par la bibliothèque de support Android:
android.support.v4.widget.SwipeRefreshLayout;
une fois importé, vous pouvez définir votre mise en page comme suit:
Je suppose que vous utilisez la vue recycleur au lieu de la vue liste. Cependant, listview fonctionne toujours, il vous suffit donc de remplacer recyclerview par listview et de mettre à jour les références dans le code java (Fragment).
Dans votre fragment d'activité, vous implémentez d'abord l'interface,:
SwipeRefreshLayout.OnRefreshListener
i, eJ'espère que cela aide les masses
la source
setRefreshing
: "N'appelez pas cela lorsque l'actualisation est déclenchée par un geste de balayage" comme décrit dans developer.android.com/reference/android/support/v4/widget/…Dans ce lien, vous pouvez trouver un fork de la fameuse
PullToRefresh
vue qui a de nouvelles implémentations intéressantes commePullTorRefreshWebView
ouPullToRefreshGridView
ou la possibilité d'ajouter unPullToRefresh
sur le bord inférieur d'une liste.https://github.com/chrisbanes/Android-PullToRefresh
Et le meilleur, c'est que le travail est parfait dans Android 4.1 (la normale
PullToRefresh
ne fonctionne pas)la source
J'ai un moyen très simple de le faire, mais maintenant je suis sûr que c'est la méthode infaillible. Il y a mon code PullDownListView.java
Vous avez juste besoin d'implémenter ListViewTouchEventListener sur votre activité où vous souhaitez utiliser ce ListView et définir l'écouteur
Je l'ai implémenté dans PullDownListViewActivity
Ça marche pour moi :)
la source
Pour implémenter Android Pull-to-Refresh, essayez ce morceau de code,
Classe d'activité:
la source
Personne n'a mentionné le nouveau type de "Pull to refresh" qui s'affiche en haut de la barre d'action comme dans l'application Google Now ou Gmail.
Il existe une bibliothèque ActionBar-PullToRefresh qui fonctionne exactement de la même manière.
la source
Notez qu'il y a des problèmes UX à gérer lors de la mise en œuvre sur Android et WP.
"Un excellent indicateur pour expliquer pourquoi les concepteurs / développeurs ne devraient pas implémenter le pull-to-refresh dans le style des applications iOS est la façon dont Google et leurs équipes n'utilisent jamais le pull-to-refresh sur Android alors qu'ils l'utilisent dans iOS."
https://plus.google.com/109453683460749241197/posts/eqYxXR8L4eb
la source
Si vous ne voulez pas que votre programme ressemble à un programme iPhone forcé dans Android, visez une apparence et une sensation plus natives et faites quelque chose de similaire à Gingerbread:
la source
J'ai écrit un pull pour actualiser le composant ici: https://github.com/guillep/PullToRefresh Cela fonctionne si la liste ne contient pas d'éléments, et je l'ai testée sur> = 1,6 téléphones Android.
Toute suggestion ou amélioration est appréciée :)
la source
Je pense que la meilleure bibliothèque est: https://github.com/chrisbanes/Android-PullToRefresh .
Marche avec:
la source
Pour obtenir la dernière actualisation Pull-To Lollipop:
android.support.v4.widget.SwipeRefreshLayout
plusandroid.support.v4.widget.SwipeRefreshLayout.OnRefreshListener
Un guide détaillé peut être trouvé ici: http://antonioleiva.com/swiperefreshlayout/
De plus pour ListView, je recommande de lire
canChildScrollUp()
dans les commentaires;)la source
Pull-to-Refresh très intéressant par Yalantis . Gif pour iOS, mais vous pouvez le vérifier :)
la source
Nous devons d'abord savoir ce qu'est Pull pour rafraîchir la mise en page dans Android. nous pouvons appeler pull pour rafraîchir dans android comme glisser-rafraîchir. lorsque vous faites glisser l'écran de haut en bas, il effectuera une action basée sur setOnRefreshListener.
Voici un didacticiel qui montre comment implémenter Android Pull pour actualiser. J'espère que ça aide.
la source