
Listados con LazyColumn y LazyRow
LazyColumn y LazyRow en Jetpack Compose son contenedores optimizados para listas grandes de elementos, evitando la creación de elementos fuera de la vista (carga perezosa o "lazy loading").
LazyColumn organiza los elementos en una lista vertical.
LazyRow organiza los elementos en una lista horizontal.
Estas listas son ideales cuando tienes muchos elementos, y quieres que solo se carguen cuando son visibles. Ambas listas tienen la misma estructura y funcionan de manera similar. Los componentes clave incluyen:
items(): Para listar elementos únicos.itemsIndexed(): Para listar elementos con un índice (útil cuando necesitas la posición del elemento).item { }: Para añadir elementos individuales que no están en una lista.
LazyColumn para una lista vertical

Con el componente LazyColumn podemos crear una lista vertical de componentes
Para que este código funcione son necesarios los siguientes import
Explicación:
itemsList crea una lista de 100 elementos con el texto "Item #".
LazyColumn se utiliza para organizar estos elementos verticalmente.
La función
items(itemsList)recorre cada elemento y lo coloca en la vista.
LazyRow para una lista horizontal
La configuración de LazyRow es similar a la de LazyColumn, pero organiza los elementos horizontalmente.
Explicación:
LazyRow organiza los elementos horizontalmente.
La función
items(itemsList)recorre cada elemento de la lista y los dispone en fila.
4. Ejemplo con índices usando itemsIndexed
Si necesitas acceder al índice de cada elemento, puedes usar itemsIndexed.
Encabezados y pies de lista con item
Es posible agregar elementos que no sean parte de la lista (como encabezados y pies de página) utilizando la función item.
Configurar el Espaciado entre Elementos con Modifier
Si necesitas añadir espacio entre los elementos, puedes hacerlo con Arrangement en Modifier.padding().
ViewModel de listados
Por ejemplo, podríamos crear una ventana para el ejemplo de la aplicación de tareas que muestre la lista de tareas que hay en el viewmodel
TasksScreen
Esta ventana muestra una lista de tareas usando un LazyColumn. Para gestionar la lista de tareas crearemos TasksViewModel
Después usamos el ViewModel en la ventana TasksScreen
Recomposiciones de listados y claves
El modificador key se utiliza para ayudar a Compose a identificar elementos específicos dentro de una lista o un conjunto de elementos que se recomponen frecuentemente. Al usar claves, le estás dando una identidad única a un elemento dentro de un grupo para que Compose sepa cómo gestionar de forma adecuada las recomposiciones.
Sin una clave, Compose puede no ser capaz de diferenciar correctamente entre instancias de composables, lo que puede llevar a errores o pérdida de estado.
¿Por qué es importante usar claves?
Las claves son útiles en situaciones donde los elementos de una lista o conjunto pueden cambiar de posición, agregarse o eliminarse, y deseas que Compose sepa qué elemento es cuál. De esta forma, el sistema puede preservar el estado correcto de los composables.
Por ejemplo, en listas dinámicas o con elementos interactivos, las claves aseguran que los elementos se identifiquen correctamente durante las recomposiciones, y no se pierda el estado específico de cada uno.
¿Qué pasa si no uso claves?
Si no usas claves, puede haber problemas a la hora de identificar qué elementos corresponden a qué instancias previas. Esto puede llevar a situaciones donde Compose pierde el estado específico de un elemento, o donde un elemento hereda el estado de otro.
Por ejemplo, si no usas key en una lista y reordenas los elementos, los estados (como el texto en un campo editable) podrían quedar asociados a un elemento incorrecto.
Última actualización
¿Te fue útil?