2012-01-19 21 views
8

Actualmente, estoy usando AsyncTask para manejar la conexión Http y recuperar datos como formato JSON.
Cargar todos los datos es trivial pero consume demasiado tiempo, así que decidí cambiar para cargar 10 elementos a la vez usando LIMIT OFFSET (mysql).
Siguiente Configuré el evento onScroll para mi vista de lista para crear un nuevo AsyncTask cada vez que el usuario se desplaza. Sin embargo, por lo que leí, AsyncTask se almacena en un grupo de subprocesos que está limitado a 5 subprocesos a la vez, por lo que no estoy seguro de que este sea un enfoque correcto. Soy un novato en la aplicación cliente/servidor, así que ¿podría alguien darme un consejo sobre este tema? Cualquier artículo relacionado, la documentación sería muy apreciada.¿Cómo se actualiza ListView en el desplazamiento mientras se recuperan los datos del servidor en Android?

Respuesta

12

Aquí están algunos enlaces útiles para ello,

Android: Implementing progressbar and "loading..." for Endless List like Android Market

Endless Listview with current Async Task

Android Endless List

http://www.androidguys.com/2009/10/21/tutorial-autogrowing-listview/

http://mylifewithandroid.blogspot.com/2010/03/progressively-loading-listviews.html

En sencillos pasos,

Como usuario se desplaza - detectar el final de la lista
1) Mostrar un progreso notificación
2) Solicitar la actualización
3) Recibir actualización (asíncrona) y lista

extender
+0

Lista maravillosa! Muchas gracias. – Cathy

+0

siempre bienvenido mi amigo !! –

2

Si está utilizando un ListView, creo que puedo suponer con seguridad que debe estar utilizando algún tipo de ListAdapter. En lugar de iniciar un nuevo AsyncTask en el evento onScroll, debe mantener solo un AsyncTask para recuperar los datos del servidor, agregar esos datos al conjunto de datos ListAdapter y luego llamar al notifyDatasetChanged en el ListAdapter.

El ListAdapter y ListView se encargarán del resto.

2

Un enfoque típico sería, p. Ej. para cargar 25 inicialmente y luego tener un pie de página en la lista que muestra, p. el recuento actual y el recuento total y al presionar carga otros 25 y así sucesivamente. Eso sería un tipo de carga paginada.

Cuando lo haga, debe mantener la posición actual y notificar al adaptador que la lista ha cambiado.

Cuestiones relacionadas