2011-11-08 24 views
5

Estoy implementando un ListView usando adaptadores personalizados. Para mejorar el rendimiento, devuelvo el View recién inflado si convertView es nulo, de lo contrario devolverá el View reciclado.¿Cuál es el uso del método setTag de View?

Ahora, en este proceso que utiliza el patrón ViewHolder y se utiliza el método de la ViewsetTag(). Inicialmente pensé que esto era una especie de marcador, pero no entendí completamente su uso. Revisé una publicación de blog diferente en la que acaba de usar esto en el código.

¿Puede alguien explicarme el uso del método setTag()?

Respuesta

13

Básicamente puede almacenar cualquier tipo de objeto como etiqueta (y devolverlo al llamar al getTag). Esto puede ser una identificación simple o algunos datos complejos. Es una información que asocia con esta vista.

En el caso de las listas y el titular de la vista patrón es un objeto simple que contiene referencias a las vistas de la vista etiquetada (grupo). Por lo tanto, no tiene que llamar al findViewById cada vez que actualiza el contenido de la vista. Es solo una optimización del rendimiento.

¿Se pueden almacenar los datos del elemento de la lista en la etiqueta de visualización?
No. Debido al reciclaje de vistas, tiene (por ejemplo) 10 vistas que se reutilizan para 1000 elementos de la lista. Almacenar datos en la etiqueta no tiene sentido aquí. Es mejor usar un objeto de datos personalizado para almacenar el estado del elemento de la lista (probablemente la misma matriz que contiene los datos mostrados) o lo persiste de inmediato en el cambio de elemento de la lista.

Véase también setTag documentation.

+0

gracias por la respuesta. Entonces, lo que entiendo es que podemos almacenar objetos. ¿Es que podemos almacenar el estado del objeto, por ejemplo, el estado de checkbox checked de la vista de lista? – droidsites

+0

Actualicé mi respuesta. – Knickedi

Cuestiones relacionadas