Optimizar un ListView usando ViewHolder

Optimizar un ListView usando ViewHolder

Veremos cómo optimizar un ListView usando ViewHolder para trabajar con listas grandes sin perder rendimiento en nuestra aplicación.

En el artículo anterior vimos cómo usar un ListView en Android para mostrar una lista de datos.  Ahora bien, ¿qué pasaría si esa lista de datos fuera muy grande? Por ejemplo, en una aplicación que contenga contactos, ésta lista fácilmente puede alcanzar los 100 elementos o más aún. 

Veamos el código propuesto para mostrar un ListView:

Pues bien, éste código hace que, cada vez que el usuario hace un desplazamiento hacia arriba o hacia abajo en la lista, se ejecuta ésta línea:

Como puedes notar, contiene una función findViewById, que es una función bastante pesada dentro de Android.

Una forma de optimizar la aplicación es haciendo los siguiente:

  1. Si es la primera vez que el elemento va a ser mostrado en pantalla, mandar a llamar a findViewById.
  2. Si el elemento ya ha sido mostrado en pantalla, no mandar a llamar a findViewById, sino mostrar el dato ya guardado.

Para realizar esto, utilizamos el patrón ViewHolder, que mejorará el rendimiento de la aplicación y en consecuencia la experiencia de uso. 

ListView usando ViewHolder

Realizaremos los cambios necesarios al código de modo que realice las siguientes instrucciones:

Notamos que:

Se determina si es la primera vez que se cargan los datos al analizar si convertView (la vista) viene nulo.

Si es así, realizamos el procedimiento normal, que incluye la llamada (o llamadas, si son varios elementos) hacia findViewById.

Se guarda el dato dentro del atributo nameTextView que pertenece a la clase ViewHolder.

Cuando el convertView no es nulo, quiere decir que el elemento ya había sido renderizado (ya fue mostrado en pantalla anteriormente), por lo que no se manda a llamar a la función findViewById, sino que se recupera del dato guardado en el holder (o portador).

ListView usando ViewHolder

ListView usando ViewHolder

Referencias

  1. De la Torre (2015). El patrón ViewHolder, qué es y cómo utilizarlo. Disponible en [http://enekodelatorre.com/el-patron-viewholder/] consultado el [17-octubre-2018].
¿Qué te pareció este artículo?
  • Excelente 
  • Interesante 
  • Regular 
  • No era lo que buscaba 
  • Poco informativo 
(Visto 52 veces)
Facebooktwittergoogle_plusmail

Tu comentario

opiniones

Comments

  • Crear un botón OptionsMenu para la action bar en Android - | Oct 17,2018

    […] Optimizar un ListView usando ViewHolder […]

  • Crear un ContextMenu en Android - | Oct 18,2018

    […] Optimizar un ListView usando ViewHolder […]

  • Leave a Reply

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *







    − 1 = 8