Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 15/09/14, 19:28:29
Array

[xs_avatar]
murtrum murtrum no está en línea
Usuario muy activo
 
Fecha de registro: nov 2012
Mensajes: 7,115
Tu operador: Otra

llemar un ListView desde URL XML con miles de items (y que cargue de 20 items?)

Hola a todos,

donde encuentro ejemplos ó información para crear un ListView que se llene con datos provenientes de una URL en formato XML, y que muestre 20 items por vez, que sería productos con foto y descripción por ejemplo.

y que luego ponga "cargando más datos" y vaya añadiendo de a 20 items a medida que el usuario baja por la lista.

como si fuera una lista interminable para que visualice 20 items, y vaya añadiendo a medida que fuera necesario.

Muchas gracias.
Responder Con Cita


  #2  
Viejo 15/09/14, 19:47:47
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
Salvo que la URL te permita mediante algún parámetro coger de 20 en 20 esa parte no vas a poder hacerla. En cuanto a lo demás, es fácil si controlas como funciona un Adapter.

Descargas 20 items en formato XML, los desserializas a un List y llenas tu Adapter de forma normal. Lo único que tienes que tener en cuenta es:

1) La longitud del Adapter siempre tiene que ser 1 más que la longitud del List.

2) Necesitas 2 ViewTypes, uno para la View normal del List y la otra para el "Cargando más datos".

3) Cuando se cree la View del "Cargando más datos" (que será cuando se vaya a mostrar) vas a la URL a buscar más items y los añades al List y notificas que al Adapter que el List ha cambiado. La view de "Cargando más datos" cambiará por el Item 21, cuando llegues al 41 volverá a salir "Cargando más datos", y así sucesivamente.

4) Tienes que tener en cuenta que si en algún momento cuando lees de la URL los items leídos son menos de 20 ya tendrás que indicar que la longitud del Adapter es igual a la longitud del List, para que no muestre el "Cargando más datos".

5) Una cosa parecida a lo que ocurre en 4 es que leas 20 (o múltiplo de 20 según la página), pero que ya hayas terminado y cuando vayas a leer los siguientes 20 no quede ninguno. En ese caso tendrás que indicar que la longitud del Adapter es la misma que el List y volver a notificar al Adapter que hay cambios (aunque realmente no los haya, pero es necesario para que haga el recálculo de la longitud del Adapter y así quite el "Cargando más datos").

Como ves son muchas cosas sencillas, pero que requieren tener claro como funciona un ListView y un Adapter.
Responder Con Cita
  #3  
Viejo 15/09/14, 20:12:05
Array

[xs_avatar]
murtrum murtrum no está en línea
Usuario muy activo
 
Fecha de registro: nov 2012
Mensajes: 7,115
Tu operador: Otra

con ese metodo, cuando se cargan los siguientes 20 desaparecen los primeros 20, ó el ListView pasa a tener 40 elementos?

Y si el ListView va manteniendo todos los elementos que se van sumando de 20 en 20, si son miles de productos se va a colapsar en algun momento por falta de memoria.

Y otra duda, si el XML lo obtengo con una tarea en segundo plano, cada imagen de la lista que viene la URL en el XML también tengo que cargarla en segundo plano ó se puede asignar directamente la URL al ImageView?

porque sino tendria que crear como 20 procesos en segundo plano para descargar cada una de las imagenes.

Última edición por murtrum Día 15/09/14 a las 20:17:15.
Responder Con Cita
  #4  
Viejo 15/09/14, 21:10:16
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
 Cita: Originalmente Escrito por murtrum Ver Mensaje
con ese metodo, cuando se cargan los siguientes 20 desaparecen los primeros 20, ó el ListView pasa a tener 40 elementos?

Y si el ListView va manteniendo todos los elementos que se van sumando de 20 en 20, si son miles de productos se va a colapsar en algun momento por falta de memoria.

Y otra duda, si el XML lo obtengo con una tarea en segundo plano, cada imagen de la lista que viene la URL en el XML también tengo que cargarla en segundo plano ó se puede asignar directamente la URL al ImageView?

porque sino tendria que crear como 20 procesos en segundo plano para descargar cada una de las imagenes.
Por partes.

Puedes hacerlo como quieras, sustituyendo a los 20 primeros o pasar a tener 40, 60, 80... eso ya depende de ti.

En tema de vista no, nunca se va a colapsar porque el ListView hace reciclado de vista, sólo se colapsará si lo programas mal. En cuanto al tema del List, supongo que si podría llegar a colapsarse, aunque muchos miles de elementos deberían de ser, y también depende del tamaño que tenga cada elemento.

Existen librerías para hacerte el trabajo de cargar imágenes en segundo plano, como UIL o Picasso. Yo te recomiendo que uses Volley, que es la librería oficial de Google, además de tener funciones específicas para cargar imágenes desde la red también puede usarse para tráfico HTTP en general, enmascarando todas las tareas de segundo plano, pareciendo que programas directamente sobre el hilo principal aunque no sea así.
Responder Con Cita
  #5  
Viejo 16/09/14, 17:13:46
Array

[xs_avatar]
murtrum murtrum no está en línea
Usuario muy activo
 
Fecha de registro: nov 2012
Mensajes: 7,115
Tu operador: Otra

 Cita: Originalmente Escrito por kriogeN Ver Mensaje
Por partes.

Puedes hacerlo como quieras, sustituyendo a los 20 primeros o pasar a tener 40, 60, 80... eso ya depende de ti.
Yo te recomiendo que uses Volley, que es la librería oficial de Google, además de tener funciones específicas para cargar imágenes desde la red también puede usarse para tráfico HTTP en general, enmascarando todas las tareas de segundo plano, pareciendo que programas directamente sobre el hilo principal aunque no sea así.
Muchas gracias.

voy a ver esa librería oficial de Google.
Responder Con Cita
  #6  
Viejo 18/09/14, 17:24:47
Array

[xs_avatar]
murtrum murtrum no está en línea
Usuario muy activo
 
Fecha de registro: nov 2012
Mensajes: 7,115
Tu operador: Otra

yo uso debian linux.

he bajado la libreria volley con el comando:

la he descargado dentro del workspace donde tengo los demás proyectos.

tengo que compilar algo? como la incluyo en el proyecto?

es que estoy aprendiendo java al mismo tiempo que estoy aprendiendo a programar para android.

Muchas gracias.
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 10:23:00 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /