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 vista

Entendi 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.)

Respuestas a la pregunta(2)

Su respuesta a la pregunta