Un RecyclerView para todas las cuadrículas y listas | Por Joao Foltran | Ene 2022


Aquí hay una historia sobre algunos de los superpoderes de RecyclerView y Data Binding, y cómo puede ayudarlo a simplificar el diseño y la lógica del adaptador de su aplicación de Android. En este artículo, discutiremos cómo administrar limpiamente múltiples cuadrículas y listas personalizables con un solo RecyclerView. Empecemos.
Construiremos la siguiente interfaz con un solo adaptador y un solo RecyclerView usando el enlace de datos.

La lógica de presentación para esto estaría en actividades principales y un modelo de vista principalque nos dará los datos que necesitamos:
proyecto: lista para mostrar, incluyendo proyecto de cerveza o café objeto.
onClickItem: función de escucha que maneja los clics en los elementos (es decir, lo que activa el SnackBar en el gif).
curDisplayConfig: Se utiliza para saber si necesitamos mostrar una cuadrícula o una lista. Esto también se puede modificar para que sea más personalizable (es decir, también significa estilo de cuadrícula)
Una vez que tengamos los datos anteriores, construiremos un BindingAdapter para permitir que nuestro RecyclerView reciba estos datos personalizados.

Así es como se ve nuestra firma BindingAdapter:
Este adaptador vinculante será responsable de construir el RecyclerView adaptador y administrador de diseño basado en su entrada.
Gerente de diseño: Por ejemplo, si curDisplayConfig Indica que necesitamos mostrar una cuadrícula, creará un GridLayoutManager y lo asignará a RecyclerView administrador de diseñoDe lo contrario, crea un LinearLayoutManager.
adaptador: Todavía tenemos que crear un adaptador Procesar nuestros listados proyecto de cerveza o café y enlácelos al diseño de elemento correcto.Después de hacer esto, BindingAdapter creará una instancia de este personalizado adaptador Datos pasados a través del enlace de datos y asignados a RecyclerView adaptador.
Nuestro adaptador recibirá la lista proyectoEsta Haz clic para escuchar y curDisplayConfig y decidirá qué diseño debe usar cada elemento y vinculará los datos del elemento a él.
Por ejemplo, si estamos mostrando una cuadrícula proyecto de cervezatenemos que usar grid_item_beer.xml diseño y encuadernación proyecto de cerveza Oyentes de objetos y clics CuadrículaElementoCervezaEncuadernación clase (generada automáticamente a partir de grid_item_beer.xml a través del enlace de datos).

Tenemos un buen sentido arquitectónico de lo que vamos a construir, ahora vamos a implementarlo.puedes seguir si quieres código fuente.
modelo de vista principal
Nuestro objetivo modelo de vista principal es exponer proyecto, onClickItem y curDisplayConfig objetos para que podamos acceder a ellos desde RecyclerView a través del enlace de datos.
esta aquí, evento de clic de elemento ser observado actividades principales Mostrar SnackBar.Otros objetos se basan en cosa y Mostrar configuración clase y oyente de clics de elementos interfaz.
actividad_principal.xml
Utilizamos el enlace de datos para acceder modelo de vista principal En nuestro archivo de diseño:
adaptador de enlace
Ahora manejamos esto en BindingAdapter para construir el adaptador y el administrador de diseño de RecyclerView:
Esto nuevamente depende de la clase de adaptador como se muestra a continuación.
adaptador
El adaptador es bastante grande, así que pegaré la clase y una descripción de cada función a continuación.Para ver el código completo, sigue revisando código fuente.
Al utilizar el enlace de datos y un solo adaptador, pudimos cambiar entre diferentes contenidos y diferentes estilos de lista/cuadrícula sin duplicar el código. Una ventaja de este enfoque es que se puede ampliar fácilmente para admitir más tipos de elementos y más configuraciones de lista/cuadrícula.
¡Gracias por leer! Si te gustan estos, no olvides seguirme para recibir notificaciones de nuevo contenido.