2011-02-09 21 views
11

Soy nuevo en la programación de Android. Me pregunto cuántos elementos puede almacenar ListView. Busco en documentos pero no hablan de esto. ¿Qué sucede si pongo muchos (tal vez 10k) elementos en un ListAdapter, afectará el rendimiento?¿Cuántos elementos puede almacenar un ListView?

Cheers, MK.

+0

_Le recomiendo que debe leer esto_ ** [artículo] (http://android.amberfog.com/?p = 296) ** –

Respuesta

-1

Tiene un límite de memoria (que es específico del dispositivo). Siempre que no agote su límite de memoria, puede almacenar tantos elementos como desee. Existen herramientas ADT que puede usar para controlar la cantidad de memoria que su aplicación está usando en cualquier momento.

7

ListView está virtualizado en Android. En términos prácticos, eso significa que no existe un límite real para la cantidad de elementos que contiene. Puede poner millones de filas dentro de la lista y solo asignará memoria para las visibles actualmente (o unas cuantas tapas más).

Consulte las docenas de tutoriales relacionados con la escritura de una clase Adaptador personalizada para un AdapterView (ListView lo amplía). Consulte también la sesión de Google I/O 2010 en ListViews; es realmente útil: here

+0

Estamos guardando estos 10k artículos en un arraylist para el adaptador de lista. Si conduce a algún problema de memoria? – user1767260

+0

Eso depende completamente de la cantidad de memoria que consuma cada uno de estos elementos y de cuánto espacio de almacenamiento tienen los dispositivos. Habiendo dicho eso, probablemente necesite algún mecanismo de ventana con recuentos de elementos de esta magnitud. –

3

Creé un ListView y usé Integer.MAX_VALUE como el número devuelto al adaptador por el número de elementos en la lista. Esto no tuvo ningún efecto en el rendimiento de ListView a pesar de que contenía alrededor de 2 mil millones de elementos.

creo 10k funcionará: P

Compruebe hacia fuera mi respuesta aquí para ver en detalle lo que quiero decir: How to create a closed (circular) ListView?

5

No hay límite en cuanto al ListView sólo sirve para hacer artículos cuando vienen a la vista, y por lo sólo se preocupa por los datos de la ListView cuando se trata de hacer que el material (a pesar de que tiene que saber la cantidad de artículos para hacer que la barra de desplazamiento correctamente)

el vídeo de Google IO realmente es ideal para aprender sobre ListView http://www.youtube.com/watch?v=wDBM6wVEO70

Dicho esto, preguntaría si DEBERÍA cargar tantos, ya que claramente el usuario no puede verlos a todos y desplazarse por un ListView con tantos elementos será muy tedioso. Si fuera yo, estaría haciendo algunas preguntas:

  • ¿La lista debe mostrarlos TODOS inicialmente? ¿Puede mostrar el conjunto más relevante? El más cercano/más grande/más pequeño/mejor/etc
  • En lugar de cargarlos todos a la vez, ¿puede cargar bloques en páginas de elementos? Entonces, por ejemplo, carga inicialmente de 10 a 100, y cuando el usuario muestra "Cargando más ..." con un ícono de progreso, y extrae más, el usuario puede elegir cuántos cargar y cuánto desplazamiento están preparados para hacer
  • ¿Debería estar construyendo una interfaz de usuario para filtrar los artículos así que nunca hay necesidad de que miren 10,000?

Más sobre ListView http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/ http://developer.android.com/guide/topics/ui/binding.html http://www.androidguys.com/2008/07/14/fancy-listviews-part-one/

3

Integer.MAX_VALUE ya que la mayoría de las funciones que se rompa ya que dependen de int position.

Cuestiones relacionadas