State of Compose 2023 results are in! Click here to learn more

← Back to Foundation

LazyColumnFor

Component
in
Foundation
. Since 0.1.0-dev16

Overview

Code Examples

A vertically scrolling list that only composes and lays out the currently visible items.

See LazyColumnForIndexed if you need to have both item and index params in itemContent. See LazyRowFor if you are looking for a horizontally scrolling version.

@param items the backing list of data to display @param modifier the modifier to apply to this layout @param state the state object to be used to control or observe the list's state @param contentPadding a padding around the whole content. This will add padding for the. content after it has been clipped, which is not possible via modifier param. You can use it to add a padding before the first item or after the last one. If you want to add a spacing between each item use verticalArrangement. @param reverseLayout reverse the direction of scrolling and layout, when true items will be composed from the bottom to the top and LazyListState.firstVisibleItemIndex == 0 will mean we scrolled to the bottom. @param verticalArrangement The vertical arrangement of the layout's children. This allows to add a spacing between items and specify the arrangement of the items when we have not enough of them to fill the whole minimum size. @param horizontalAlignment the horizontal alignment applied to the items @param itemContent emits the UI for an item from items list. May emit any number of components, which will be stacked vertically. Note that LazyColumnFor can start scrolling incorrectly if you emit nothing and then lazily recompose with the real content, so even if you load the content asynchronously please reserve some space for the item, for example using Spacer. Use LazyColumnForIndexed if you need to have both index and item params.

Overloads

LazyColumnFor

@Composable
@Deprecated(
    "Use LazyColumn instead",
    ReplaceWith(
        "LazyColumn(modifier, state, contentPadding, horizontalAlignment = " +
            "horizontalAlignment) { \n items(items, itemContent) \n }",
        "androidx.compose.foundation.lazy.LazyColumn",
        "androidx.compose.foundation.lazy.items"
    )
)
fun <T> LazyColumnFor(
    items: List<T>,
    modifier: Modifier = Modifier,
    state: LazyListState = rememberLazyListState(),
    contentPadding: PaddingValues = PaddingValues(0.dp),
    reverseLayout: Boolean = false,
    verticalArrangement: Arrangement.Vertical =
        if (!reverseLayout) Arrangement.Top else Arrangement.Bottom,
    horizontalAlignment: Alignment.Horizontal = Alignment.Start,
    itemContent: @Composable LazyItemScope.(T) -> Unit
)

Parameters

NameDescription
itemsthe backing list of data to display
modifierthe modifier to apply to this layout
statethe state object to be used to control or observe the list's state
contentPaddinga padding around the whole content. This will add padding for the. content after it has been clipped, which is not possible via modifier param. You can use it to add a padding before the first item or after the last one. If you want to add a spacing between each item use verticalArrangement.
reverseLayoutreverse the direction of scrolling and layout, when true items will be composed from the bottom to the top and LazyListState.firstVisibleItemIndex == 0 will mean we scrolled to the bottom.
verticalArrangementThe vertical arrangement of the layout's children. This allows to add a spacing between items and specify the arrangement of the items when we have not enough of them to fill the whole minimum size.
horizontalAlignmentthe horizontal alignment applied to the items
itemContentemits the UI for an item from items list. May emit any number of components, which will be stacked vertically. Note that LazyColumnFor can start scrolling incorrectly if you emit nothing and then lazily recompose with the real content, so even if you load the content asynchronously please reserve some space for the item, for example using Spacer. Use LazyColumnForIndexed if you need to have both index and item params