¿Cómo mejorar el rendimiento de desplazamiento de RecyclerView en Android?

RecyclerView es el componente principal de la interfaz de usuario en Android que se utiliza para representar la enorme lista de datos. Si RecyclerView no se implementa correctamente, no se podrá desplazar sin problemas y puede dar lugar a una mala experiencia de usuario. Para que se pueda desplazar sin problemas, debemos optimizarlo y seguir algunos consejos para mejorar su rendimiento. En este artículo veremos los pasos a seguir para optimizar el rendimiento del Scrolling de nuestro RecyclerView.  

Nota:

Si está buscando la guía de implementación de RecyclerView. Entonces revisa: Cómo implementar RecyclerView en Android

1. Establezca un ancho y una altura específicos para ImageView en los elementos de RecyclerView

En RecyclerView, si está utilizando ImageView para mostrar una imagen de su servidor en sus elementos de RecyclerView, especifique el tamaño constante para su ImageView. Si el tamaño de ImageView en los elementos de RecyclerView no es fijo, RecyclerView tardará un tiempo en cargarse y ajustar el tamaño del elemento de RecyclerView de acuerdo con el tamaño de la imagen. Entonces, para mejorar el rendimiento de nuestro RecyclerView, debemos mantener el tamaño de nuestro ImageView para que RecyclerView se cargue más rápido. 

2. Evite usar NestedView

Al crear un elemento para RecyclerView, evite usar NestedView para el elemento RecyclerView. El anidamiento reducirá el rendimiento de RecyclerView. Por lo tanto, es mejor evitar usar la vista anidada. Vista anidada significa agregar un RecyclerView horizontal en un RecyclerView vertical. Este tipo de anidamiento puede reducir el rendimiento de RecyclerView. A continuación se muestra la imagen de Nested RecyclerView. 

3. Usa el método setHasFixedsize

Si la altura de nuestros elementos RecyclerView es fija, entonces deberíamos usar el método setHasFixedsize en nuestro XML de nuestro elemento de tarjeta. Esto arreglará la altura de nuestro elemento RecyclerView y evitará que aumente o disminuya el tamaño de nuestro diseño de tarjeta. También podemos usar este método en nuestra clase JAVA donde declaramos nuestro adaptador RecyclerView y el administrador de diseño.

recyclerView.setHasFixedSize(verdadero)

4. Use la biblioteca de carga de imágenes para cargar imágenes

RecyclerView se compone de tantas imágenes y si está cargando una imagen en todas las tarjetas, la carga de cada imagen desde el servidor llevará mucho tiempo. Como Garbage Collection se ejecuta en el subproceso principal, esta es la razón por la que la interfaz de usuario no responde. La asignación y desasignación continuas de memoria conducen a la ejecución frecuente del GC. Esto se puede evitar utilizando el concepto de grupo de mapas de bits. La solución simple para abordar este problema es usar bibliotecas de carga de imágenes como Picasso , Glide , Fresco y muchas más. Estas bibliotecas manejarán todo el concepto de grupo de mapas de bits y todas las tareas delegadas relacionadas con las imágenes. 

Nota: también puede consultar las 5 principales bibliotecas de carga de imágenes en Android

5. Trabaja menos en el método OnBindViewHolder

El método OnBindViewHolder se usa para establecer datos en cada elemento de RecyclerView. Este método establecerá los datos en cada elemento de RecyclerView. Deberíamos hacer menos trabajo en este método. Solo tenemos que configurar datos en este método y no hacer ninguna comparación ni ninguna tarea pesada. Si realizamos alguna tarea pesada con este método, esto degradará el rendimiento de nuestro RecyclerView porque la configuración de los datos para cada elemento llevará una cantidad de tiempo específica. Entonces, para mejorar el rendimiento de RecyclerView, deberíamos trabajar menos en el método OnBindViewHolder.

6. Use el método NotifyItem para su RecyclerView

Siempre que realice acciones en RecyclerView, como agregar un elemento en RecyclerView en cualquier posición o eliminar un elemento de una posición específica de RecyclerView, debe usar el método NotifyItemChange()

Java

// below method will notify the adapter 
// of our RecyclerView when an item 
// from RecyclerView is removed. 
adapter.notifyItemRemoved(position)
    
// below method will be used when
// we update the data of any RecyclerView 
// item at a fixed position.  
adapter.notifyItemChanged(position)
    
// below method is used when we add 
// any item at a specific position
// of our RecyclerView.  
adapter.notifyItemInserted(position)
    
// below method is used when we add multiple 
// number of items in our recyclerview.
// start represents the position from 
// which the items are added.
// end represents the position upto 
// which we have to add items.   
adapter.notifyItemRangeInserted(start, end)

Cuando llamemos al método notificarDataSetChanged() , no manejará el reordenamiento completo del adaptador RecyclerView, pero encontrará si el elemento en esa posición es el mismo que antes para hacer menos trabajo. 

Publicación traducida automáticamente

Artículo escrito por chaitanyamunje y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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