En aplicaciones de Android como Twitter (aplicación oficial), cuando encuentre un ListView, puede desplegarlo (y se recuperará cuando se lance) para actualizar el contenido.
Me pregunto cuál es la mejor manera, en su opinión, de implementar eso.
Algunas posibilidades que se me ocurren:
- Un elemento en la parte superior de ListView; sin embargo, no creo que volver a la posición 1 del elemento (basado en 0) con animación en ListView sea una tarea fácil.
- Otra vista fuera de ListView, pero tengo que ocuparme de mover la posición de ListView hacia abajo cuando se tira, y no estoy seguro de si podemos detectar si los toques de arrastre a ListView todavía realmente desplazan los elementos en ListView.
¿Alguna recomendación?
PD: Me pregunto cuándo se lanzará el código fuente oficial de la aplicación de Twitter. Se ha mencionado que se lanzará, pero han pasado 6 meses y no hemos tenido noticias suyas desde entonces.
android
listview
android-listview
pull-to-refresh
Randy Sugianto 'Yuku'
fuente
fuente
Respuestas:
¡Finalmente, Google lanzó una versión oficial de la biblioteca pull-to-refresh!
Se llama
SwipeRefreshLayout
, dentro de la biblioteca de soporte, y la documentación está aquí :Agregue
SwipeRefreshLayout
como vista principal, que se tratará como una extracción para actualizar el diseño. (ToméListView
como ejemplo, puede serView
comoLinearLayout
,ScrollView
etc.)Agrega un oyente a tu clase
También puede llamar
pullToRefresh.setRefreshing(true/false);
según sus requisitos.ACTUALIZAR
Las bibliotecas de soporte de Android han quedado en desuso y han sido reemplazadas por AndroidX. El enlace a la nueva biblioteca se puede encontrar aquí .
Además, debe agregar la siguiente dependencia a su proyecto:
O
Puede ir a Refactor >> Migrar a AndroidX y Android Studio se encargará de las dependencias por usted.
fuente
Intenté implementar un componente de extracción para actualizar, está lejos de estar completo pero demuestra una posible implementación, https://github.com/johannilsson/android-pulltorefresh .
La lógica principal se implementa en
PullToRefreshListView
ese sentidoListView
.Internamente controla el desplazamiento de una vista de encabezado usandoEl widget ahora se actualiza con soporte para 1.5 y posterior, por favor lea el archivo README para soporte 1.5.smoothScrollBy
(API Nivel 8).En sus diseños simplemente lo agrega así.
fuente
También he implementado una biblioteca PullToRefresh robusta, de código abierto, fácil de usar y altamente personalizable para Android. Puede reemplazar su ListView con PullToRefreshListView como se describe en la documentación en la página del proyecto.
https://github.com/erikwt/PullToRefresh-ListView
fuente
La forma más fácil que creo es la proporcionada por la biblioteca de soporte de Android:
android.support.v4.widget.SwipeRefreshLayout;
una vez que se importa, puede tener su diseño definido de la siguiente manera:
Supongo que usa la vista de reciclador en lugar de la vista de lista. Sin embargo, listview todavía funciona, por lo que solo necesita reemplazar la vista de reciclaje con viewview y actualizar las referencias en el código de Java (Fragmento).
En su fragmento de actividad, primero implemente la interfaz
SwipeRefreshLayout.OnRefreshListener
: i, eEspero que esto ayude a las masas
fuente
setRefreshing
: "No llame a esto cuando la actualización se active por un gesto de deslizamiento" como se describe en developer.android.com/reference/android/support/v4/widget/…En este enlace, se puede encontrar un tenedor de la famosa
PullToRefresh
vista que tiene nuevas implementaciones interesantes comoPullTorRefreshWebView
oPullToRefreshGridView
o la posibilidad de añadir unaPullToRefresh
en el borde inferior de una lista.https://github.com/chrisbanes/Android-PullToRefresh
Y lo mejor de todo es que funciona perfectamente en Android 4.1 (lo normal
PullToRefresh
no funciona)fuente
Tengo una manera muy fácil de hacer esto, pero ahora estoy seguro de que es la manera infalible. Hay mi código PullDownListView.java
Solo necesita implementar ListViewTouchEventListener en su actividad donde desea usar este ListView y configurar el oyente
Lo tengo implementado en PullDownListViewActivity
Esto funciona para mi :)
fuente
Para implementar Android Pull-to-Refresh, pruebe este código,
Clase de actividad:
fuente
Nadie ha mencionado el nuevo tipo de "Tire para actualizar" que se muestra en la parte superior de la barra de acción como en la aplicación Google Now o Gmail.
Hay una biblioteca ActionBar-PullToRefresh que funciona exactamente igual.
fuente
Tenga en cuenta que hay problemas de UX con los que lidiar cuando se implementa en Android y WP.
"Un gran indicador de por qué los diseñadores / desarrolladores no deberían implementar pull-to-refresh en el estilo que hacen las aplicaciones de iOS es cómo Google y sus equipos nunca usan pull-to-refresh en Android mientras lo hacen en iOS".
https://plus.google.com/109453683460749241197/posts/eqYxXR8L4eb
fuente
Si no desea que su programa se vea como un programa de iPhone que se ajusta a la fuerza en Android, busque un aspecto más nativo y haga algo similar a Gingerbread:
fuente
He escrito un componente de extracción para actualizar aquí: https://github.com/guillep/PullToRefresh Funciona si la lista no tiene elementos, y lo he probado en> = 1.6 teléfonos Android.
Cualquier sugerencia o mejora es apreciada :)
fuente
Creo que la mejor biblioteca es: https://github.com/chrisbanes/Android-PullToRefresh .
Funciona con:
fuente
Para obtener la última actualización Pull-To de Lollipop:
android.support.v4.widget.SwipeRefreshLayout
plusandroid.support.v4.widget.SwipeRefreshLayout.OnRefreshListener
Puede encontrar una guía detallada aquí: http://antonioleiva.com/swiperefreshlayout/
Además de ListView, recomiendo leer
canChildScrollUp()
en los comentarios;)fuente
Muy interesante Pull-to-Refresh de Yalantis . Gif para iOS, pero puedes consultarlo :)
fuente
Primero debemos saber qué es Pull para actualizar el diseño en Android. podemos llamar a pull para actualizar en Android como deslizar para actualizar. cuando desliza la pantalla de arriba a abajo, realizará alguna acción basada en setOnRefreshListener.
Aquí hay un tutorial que demuestra cómo implementar Android pull para actualizar. Espero que esto ayude.
fuente