Wenn Sie in Android-Anwendungen wie Twitter (offizielle App) auf eine ListView stoßen, können Sie diese nach unten ziehen (und sie wird bei der Veröffentlichung zurückspringen), um den Inhalt zu aktualisieren.
Ich frage mich, wie Sie das Ihrer Meinung nach am besten umsetzen können.
Einige Möglichkeiten, die mir einfallen könnten:
- Ein Element über der ListView - ich denke jedoch nicht, dass das Zurückblättern zu Elementposition 1 (0-basiert) mit Animation in der ListView eine einfache Aufgabe ist.
- Eine andere Ansicht außerhalb der ListView - aber ich muss darauf achten, dass die ListView-Position beim Ziehen nach unten verschoben wird, und ich bin nicht sicher, ob wir erkennen können, ob die Drag-Touch-Berührungen der ListView die Elemente in der ListView noch wirklich scrollen.
Irgendwelche Empfehlungen?
PS Ich frage mich, wann der offizielle Quellcode der Twitter-App veröffentlicht wird. Es wurde erwähnt, dass es veröffentlicht wird, aber 6 Monate sind vergangen und wir haben seitdem nichts mehr davon gehört.
android
listview
android-listview
pull-to-refresh
Randy Sugianto 'Yuku'
quelle
quelle
Antworten:
Schließlich hat Google eine offizielle Version der Pull-to-Refresh-Bibliothek veröffentlicht!
Es wird
SwipeRefreshLayout
in der Support-Bibliothek aufgerufen und die Dokumentation finden Sie hier :Fügen Sie
SwipeRefreshLayout
als Eltern betrachtet , die als Pull behandelt werden , um das Layout zu aktualisieren. (Ich habeListView
als Beispiel, es kann beliebig sein ,View
wieLinearLayout
,ScrollView
etc.)Fügen Sie Ihrer Klasse einen Listener hinzu
Sie können auch
pullToRefresh.setRefreshing(true/false);
nach Ihren Wünschen anrufen .AKTUALISIEREN
Android-Unterstützungsbibliotheken sind veraltet und wurden durch AndroidX ersetzt. Den Link zur neuen Bibliothek finden Sie hier .
Außerdem müssen Sie Ihrem Projekt die folgende Abhängigkeit hinzufügen:
ODER
Sie können zu Refactor >> Migrate to AndroidX gehen und Android Studio übernimmt die Abhängigkeiten für Sie.
quelle
Ich habe versucht, eine Pull-to-Refresh-Komponente zu implementieren. Sie ist bei weitem nicht vollständig , zeigt jedoch eine mögliche Implementierung, https://github.com/johannilsson/android-pulltorefresh .
Die Hauptlogik ist in
PullToRefreshListView
dieser Erweiterung implementiertListView
.Intern wird das Scrollen einer Header-Ansicht mithilfe vonDas Widget wurde jetzt mit Unterstützung für 1.5 und höher aktualisiert. Bitte lesen Sie jedoch die README for 1.5-Unterstützung.smoothScrollBy
(API Level 8) gesteuert.In Ihren Layouts fügen Sie es einfach so hinzu.
quelle
Ich habe auch eine robuste, Open Source, benutzerfreundliche und hochgradig anpassbare PullToRefresh-Bibliothek für Android implementiert. Sie können Ihre ListView durch die PullToRefreshListView ersetzen, wie in der Dokumentation auf der Projektseite beschrieben.
https://github.com/erikwt/PullToRefresh-ListView
quelle
Ich denke, der einfachste Weg ist der, den die Android-Support-Bibliothek bietet:
android.support.v4.widget.SwipeRefreshLayout;
Sobald dies importiert ist, können Sie Ihr Layout wie folgt definieren:
Ich gehe davon aus, dass Sie die Recycler-Ansicht anstelle der Listenansicht verwenden. Die Listenansicht funktioniert jedoch weiterhin, sodass Sie nur die Recyclingansicht durch die Listenansicht ersetzen und die Verweise im Java-Code (Fragment) aktualisieren müssen.
In Ihrem Aktivitätsfragment implementieren Sie zuerst die Schnittstelle.
SwipeRefreshLayout.OnRefreshListener
: i, eHoffe das hilft den Massen
quelle
setRefreshing
: "Rufen Sie dies nicht auf, wenn die Aktualisierung durch eine Wischgeste ausgelöst wird", wie in developer.android.com/reference/android/support/v4/widget/…In diesem Link finden Sie eine Abzweigung der berühmten
PullToRefresh
Ansicht, die neue interessante Implementierungen wiePullTorRefreshWebView
oderPullToRefreshGridView
oder die Möglichkeit enthält, einePullToRefresh
am unteren Rand einer Liste hinzuzufügen .https://github.com/chrisbanes/Android-PullToRefresh
Und das Beste daran ist, dass es in Android 4.1 perfekt funktioniert (das Normale
PullToRefresh
funktioniert nicht).quelle
Ich habe eine sehr einfache Möglichkeit, dies zu tun, aber jetzt ist es sicher die narrensichere Möglichkeit. Es gibt meinen Code PullDownListView.java
Sie müssen lediglich ListViewTouchEventListener in Ihrer Aktivität implementieren, in der Sie diese ListView verwenden möchten, und den Listener festlegen
Ich habe es in PullDownListViewActivity implementiert
Für mich geht das :)
quelle
Um Android Pull-to-Refresh zu implementieren, versuchen Sie diesen Code,
Aktivitätsklasse:
quelle
Niemand hat die neue Art von "Zum Aktualisieren ziehen" erwähnt, die wie in der Google Now- oder Google Mail-Anwendung über der Aktionsleiste angezeigt wird.
Es gibt eine Bibliothek ActionBar-PullToRefresh, die genauso funktioniert.
quelle
Beachten Sie, dass bei der Implementierung unter Android und WP UX-Probleme auftreten.
"Ein guter Indikator dafür, warum Designer / Entwickler Pull-to-Refresh nicht im Stil von iOS-Apps implementieren sollten, ist, wie Google und seine Teams Pull-to-Refresh unter Android niemals verwenden, während sie es unter iOS verwenden."
https://plus.google.com/109453683460749241197/posts/eqYxXR8L4eb
quelle
Wenn Sie nicht möchten, dass Ihr Programm wie ein iPhone-Programm aussieht, das zwangsweise in Android integriert ist, streben Sie ein nativeres Erscheinungsbild an und tun Sie etwas Ähnliches wie Lebkuchen:
quelle
Ich habe hier eine Pull-to-Refresh-Komponente geschrieben: https://github.com/guillep/PullToRefresh Es funktioniert, wenn die Liste keine Elemente enthält, und ich habe sie auf> = 1.6 Android-Handys getestet.
Jeder Vorschlag oder jede Verbesserung wird geschätzt :)
quelle
Ich denke, die beste Bibliothek ist: https://github.com/chrisbanes/Android-PullToRefresh .
Arbeitet mit:
quelle
So erhalten Sie die neueste Lollipop Pull-To-Aktualisierung:
android.support.v4.widget.SwipeRefreshLayout
plusandroid.support.v4.widget.SwipeRefreshLayout.OnRefreshListener
Eine ausführliche Anleitung finden Sie hier: http://antonioleiva.com/swiperefreshlayout/
Plus für ListView empfehle ich
canChildScrollUp()
in den Kommentaren zu lesen ;)quelle
Sehr interessanter Pull-to-Refresh von Yalantis . Gif für iOS, aber du kannst es überprüfen :)
quelle
Wir sollten zuerst wissen, was Pull ist, um das Layout in Android zu aktualisieren. Wir können Pull zum Aktualisieren in Android als Swipe-to-Refresh aufrufen. Wenn Sie den Bildschirm von oben nach unten streichen, wird eine Aktion basierend auf setOnRefreshListener ausgeführt.
Hier ist ein Tutorial , das zeigt, wie man Android Pull zum Aktualisieren implementiert. Ich hoffe das hilft.
quelle