Explicación del método getView () de un ArrayAdapter
¿Podría explicar lagetView()
método de unArrayAdapter
.
Leí los documentos y tiene tres parámetros:
position
: La posición del elemento dentro del conjunto de datos del adaptador del elemento cuya vista deseamos.convertView
: La vista antigua para reutilizar, si es posible. Nota: Debe verificar que esta vista no sea nula y de un tipo apropiado antes de usar. Si no es posible convertir esta vista para mostrar los datos correctos, este método puede crear una nueva vista.Las listas heterogéneas pueden especificar su número de tipos de vista, por lo que esta vista es siempre del tipo correcto (consulte getViewTypeCount () y getItemViewType (int)).
parent
: El padre al que finalmente se adjuntará esta vistaEntendi elposition
parámetro. Como dijeron, implica la posición del elemento que se ha solicitado la vista.
Donde haceconvertView
viene de. He visto muchos ejemplos donde verifican siconvertView
es nulo. Si es nulo, inflan una nueva instancia del diseño de la fila, la rellenan y la devuelven. Supongo que también me he metido en eso, pero una cosa todavía me desconcierta. ¿Cuál es el diseño que se pasa a través de laconvertView
parámetro. Es silaresource
parámetro que se pasa al inicializar elArrayAdapter
? Es una copia en caché del último diseño devuelto porgetView()
?
Y por último. Lo que hace elparent
parámetro hacer. No he visto demasiados ejemplos utilizando esto. La mayoría de ellos simplemente reutilizan / inflan el diseño de una fila y lo devuelven.
(Lo pregunto porque tengo una animación de clic en miListView
. Específicamenteeste que apunta a replicar el menú de acción rápida desplegable de Spotify. Mi animación ha sido un poco lenta. Después de diagnosticar este problema por un tiempo, me he dado cuenta de que esto se debe al hecho de que migetView()
El método requiere un poco de tiempo para completarlo, ya que estoy inflando un diseño de fila nuevo en cada iteración. Alguien sugirió almacenar en caché el diseño de la fila en unaViewHolder
mientras que otros ejemplos apuntan a reutilizar elconvertView
parámetro, es decir, solo inflando un diseño de fila siconvertView
es nulo.)