¿Cómo agregar divisores entre elementos en un LazyColumn Jetpack Compose?

1 minuto de lectura

Avatar de usuario de Cameron
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?

Avatar de usuario de Gabriele Mariotti
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 Dividerpuede 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)
    }
}

ingrese la descripción de la imagen aquí

  • 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 escribir index < 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

¿Ha sido útil esta solución?