2011-08-17 16 views
8

Estoy trabajando en ListView. Quiero saber cuándo se llama exactamente getView(). ¿Se llama una vez que se establece el adaptador? ¿Y se llama a la línea al lado de "setting adapter" una vez que el método getView() completa la ejecución?¿Cuándo se llama al método getView() de ListView?

Por favor, ayúdenme a saber qué línea se ejecuta una vez que el getView() finaliza la ejecución.

Eso sería una gran ayuda para mí.

Gracias de antemano, Vaishnvai

+0

¿Puedes publicar tu código? –

Respuesta

11

getView() se llama para cada elemento de la lista que se pasa a su adaptador. Se llama cuando configura el adaptador. Cuando se completa getView(), se llama a la siguiente línea después de setAdapter(myAdapter). Para depurar getView() debe alternar un punto de interrupción en él porque no puede entrar en getView() desde setAdapter(myAdapter). getView() también se llama después de notifyDataSetChanged() y en el desplazamiento.

+0

Gracias por su respuesta rápida Cuando configuro algunos valores a una variable en el método getView(). Todavía muestran cero, cuando los imprimo en la línea al lado del método setAdapter(). Estas variables son accessbile a la actividad completa. ¿Puede ayudarlo? – Vaishnavi

+3

hey.Una vez que getView() se ejecuta, el control no vuelve a la declaración junto a setAdapter(). De hecho, el control no va directamente a getView() una vez que se llama a setAdapter(), casi todas las instrucciones después de que se exceden y luego los controles se mueven a getView(). Estoy literalmente confundido con este comportamiento. Por favor ayuda. – Vaishnavi

+1

Hola. Eso significa que, si tengo 100 elementos para mostrar en la vista de lista, entonces se llamará al método getView() 100 veces? –

7

Para ser más claros, se llama a getView() cada vez que se muestra un elemento nuevo en la pantalla, al conteo de los elementos mostrados. Lo que significa que si tiene 1 millón de elementos pero 15 de ellos se ajustan a la pantalla, se llama a getView 15 veces. Cada vez que se desplaza hacia arriba/abajo y aparecen nuevos elementos, se llama a getView() para obtener nuevos. Y también debe conocer el mecanismo de reciclado. Que contiene un diseño de elemento de plantilla para cada tipo de elemento, y envía en esta vista al método getView() como parámetro convertView, por lo que puede usarlo para evitar el inflado del diseño.

+0

Hola ... ¿Entonces, cuando me desplazo hacia abajo, se llama al método getView() para cada elemento de la lista que se vuelve visible para el usuario? Además, inicialmente, si solo 10 elementos pueden ser visibles en la pantalla del móvil a la vez, entonces al comienzo, el método getView() se llama 10 veces. ¿Estoy pensando correctamente? ... Gracias. –

+0

@TheHunter sí, eso es correcto. –

+0

Y convertView == null cada vez que se llama a getView()? –

Cuestiones relacionadas