cameron
Tengo una LazyColumn que se parece a esto:
LazyColumn (
verticalArrangement = Arrangement.spacedBy(12.dp)
) {
items(bookList) { book ->
InProgressBookItem(book = book)
}
}
¿Cómo puedo agregar una línea entre cada elemento de la lista, similar al uso de una decoración de elementos en el antiguo RecyclerView?
gabriele mariotti
Actualmente no hay una forma integrada de agregar divisores. Sin embargo, solo puede agregar un Divider
en el LazyListScope
.
Algo como:
LazyColumn(
verticalArrangement = Arrangement.spacedBy(12.dp),
) {
items(itemsList){
Text("Item at $it")
Divider(color = Color.Black)
}
}
Si no desea que el último elemento vaya seguido de un Divider
puede agregar divisores a los elementos según sus índices:
LazyColumn(
verticalArrangement = Arrangement.spacedBy(12.dp),
) {
itemsIndexed(itemsList) { index, item ->
Text("Item at index $index is $item")
if (index < itemsList.lastIndex)
Divider(color = Color.Black, thickness = 1.dp)
}
}
-
Este fue mi primer pensamiento, pero esperaba que hubiera una forma más elegante e integrada de hacerlo. Por ahora, esto debería funcionar, ¡gracias!
– Cameron
17/04/2021 a las 18:00
-
Consejo: en lugar de
index < itemsList.size-1
puedes escribirindex < itemsList.lastIndex
– o_dvir
4 oct 2021 a las 15:35
-
O componer el equipo central habría proporcionado un parámetro divisor que acepta Composable en la función LazyColumn en lugar de obligarnos a hacer soluciones alternativas como esta
– Farid
4 de febrero a las 12:08
Simple:
LazyColumn (
verticalArrangement = Arrangement.spacedBy(12.dp)
) {
items(bookList) { book ->
InProgressBookItem(book = book)
Divider(color = Color.Black, thickness = 1.dp)
}
}
-
¿Esto no agregará un divisor después del libro final también? Creo que el autor de la pregunta los quería. solo entre elementos.
– Arthur Kasparian
24/10/2022 a las 11:45