W aplikacjach na Androida, takich jak Twitter (oficjalna aplikacja), gdy natrafisz na ListView, możesz go ściągnąć w dół (a on się odskoczy po zwolnieniu), aby odświeżyć zawartość.
Zastanawiam się, jaki jest Twoim zdaniem najlepszy sposób na wdrożenie tego?
Niektóre możliwości, o których mógłbym pomyśleć:
- Element nad ListView - jednak nie sądzę, że przewijanie z powrotem do pozycji 1 (oparte na 0) z animacją na ListView to łatwe zadanie.
- Kolejny widok poza ListView - ale muszę zadbać o przesunięcie pozycji ListView, gdy jest ona ciągnięta, i nie jestem pewien, czy możemy wykryć, czy przeciągnięcia do ListView nadal naprawdę przewijają elementy na ListView.
Jakieś rekomendacje?
PS Zastanawiam się, kiedy zostanie wydany oficjalny kod źródłowy aplikacji na Twitterze. Wspomniano, że zostanie wydany, ale minęło 6 miesięcy i od tego czasu o nim nie słyszeliśmy.
android
listview
android-listview
pull-to-refresh
Randy Sugianto „Yuku”
źródło
źródło
Odpowiedzi:
Wreszcie Google wydało oficjalną wersję biblioteki pull-to-refresh!
Nazywa się on
SwipeRefreshLayout
wewnątrz biblioteki wsparcia, a dokumentacja znajduje się tutaj :Dodaj
SwipeRefreshLayout
jako element nadrzędny widoku, który będzie traktowany jako przeciągnięcie w celu odświeżenia układu. (WziąłemListView
jako przykład, może to być dowolnyView
jakLinearLayout
,ScrollView
itd.)Dodaj słuchacza do swojej klasy
Możesz również zadzwonić
pullToRefresh.setRefreshing(true/false);
zgodnie z wymaganiami.AKTUALIZACJA
Biblioteki obsługi Androida zostały wycofane i zostały zastąpione przez AndroidX. Link do nowej biblioteki można znaleźć tutaj .
Ponadto należy dodać do projektu następującą zależność:
LUB
Możesz przejść do Refactor >> Migruj do AndroidX, a Android Studio zajmie się Twoimi zależnościami.
źródło
Podjęłam próbę zaimplementowania komponentu pull to refresh, ale jeszcze nie jest ukończona, ale pokazuje możliwą implementację, https://github.com/johannilsson/android-pulltorefresh .
Główna logika jest zaimplementowana w
PullToRefreshListView
tym rozszerzeniuListView
.Wewnętrznie kontroluje przewijanie widoku nagłówka za pomocąWidżet został teraz zaktualizowany o obsługę wersji 1.5 i nowszych. Przeczytaj jednak plik README dotyczący obsługi wersji 1.5.smoothScrollBy
(API Level 8).W swoich układach po prostu dodajesz go w ten sposób.
źródło
Zaimplementowałem również solidną, open source, łatwą w użyciu i wysoce konfigurowalną bibliotekę PullToRefresh dla Androida. Możesz zamienić ListView na PullToRefreshListView zgodnie z opisem w dokumentacji na stronie projektu.
https://github.com/erikwt/PullToRefresh-ListView
źródło
Myślę, że najłatwiejszy sposób zapewnia biblioteka obsługi Androida:
android.support.v4.widget.SwipeRefreshLayout;
po zaimportowaniu możesz zdefiniować układ w następujący sposób:
Zakładam, że używasz widoku programu do recyklingu zamiast widoku listy. Jednak widok listy nadal działa, więc wystarczy zastąpić widok recyklera widokiem listy i zaktualizować odwołania w kodzie Java (Fragment).
W swoim fragmencie aktywności najpierw implementujesz interfejs
SwipeRefreshLayout.OnRefreshListener
: tjMam nadzieję, że to pomaga masom
źródło
setRefreshing
: „Nie nazywaj tego, gdy odświeżanie jest wywoływane przez gest machnięcia”, jak opisano w developer.android.com/reference/android/support/v4/widget/…W tym łączu można znaleźć widelec słynnego
PullToRefresh
widoku, który ma nowe interesujące implementacje, takie jakPullTorRefreshWebView
lubPullToRefreshGridView
lub możliwość dodaniaPullToRefresh
dolnej krawędzi listy.https://github.com/chrisbanes/Android-PullToRefresh
A najlepsze jest to, że działa idealnie w Androidzie 4.1 (normalne
PullToRefresh
nie działa)źródło
Mam bardzo łatwy sposób, aby to zrobić, ale teraz jestem pewien, że jest to niezawodny sposób. Istnieje mój kod PullDownListView.java
Musisz tylko zaimplementować ListViewTouchEventListener na swoim działaniu, w którym chcesz użyć tego ListView i ustawić detektor
Mam to zaimplementowane w PullDownListViewActivity
Mi to pasuje :)
źródło
Aby wdrożyć Android Pull-to-Refresh, wypróbuj ten fragment kodu,
Klasa aktywności:
źródło
Nikt nie wspomniał o nowym typie „Przyciągnij, aby odświeżyć”, który wyświetla się nad paskiem akcji, jak w aplikacji Google Now lub Gmail.
Istnieje biblioteka ActionBar-PullToRefresh, która działa dokładnie tak samo.
źródło
Zauważ, że istnieją problemy z UX, z którymi należy się zmierzyć przy wdrażaniu na Androida i WP.
„Doskonałym wskaźnikiem tego, dlaczego projektanci / deweloperzy nie powinni stosować metody„ pull-to-refresh ”w stylu aplikacji na iOS, jest to, że Google i ich zespoły nigdy nie używają funkcji pull-to-odświeżanie na Androidzie, gdy używają go w iOS.
https://plus.google.com/109453683460749241197/posts/eqYxXR8L4eb
źródło
Jeśli nie chcesz, aby Twój program wyglądał jak program iPhone'a, który jest na siłę dopasowywany do Androida, postaraj się uzyskać bardziej natywny wygląd i zrób coś podobnego do Piernika:
źródło
Napisałem link do odświeżenia tutaj: https://github.com/guillep/PullToRefresh Działa, jeśli lista nie zawiera elementów, i przetestowałem go na telefonach z Androidem> = 1.6.
Wszelkie sugestie lub ulepszenia są mile widziane :)
źródło
Myślę, że najlepsza biblioteka to: https://github.com/chrisbanes/Android-PullToRefresh .
Pracuje z:
źródło
Aby uzyskać najnowszy Lollipop Pull-To Refresh:
android.support.v4.widget.SwipeRefreshLayout
plusandroid.support.v4.widget.SwipeRefreshLayout.OnRefreshListener
Szczegółowy przewodnik można znaleźć tutaj: http://antonioleiva.com/swiperefreshlayout/
Plus dla ListView Polecam przeczytać
canChildScrollUp()
w komentarzach;)źródło
Bardzo ciekawe Pull-to-Refresh autorstwa Yalantis . Gif na iOS, ale możesz to sprawdzić :)
źródło
Najpierw powinniśmy wiedzieć, co to jest Pull, aby odświeżyć układ w Androidzie. możemy wywołać pull, aby odświeżyć w Androidzie, przeciągając, aby odświeżyć. po przesunięciu ekranu od góry do dołu wykona on pewne działania w oparciu o setOnRefreshListener.
Oto samouczek, który pokazuje, jak zaimplementować ściąganie Androida w celu odświeżenia. Mam nadzieję, że to pomoże.
źródło