Jetpack Compose LazyColumnFor устарел, как использовать LazyColumn с listState и списком объектов?
По состоянию на
Jetpack Compose 1.0.0-alpha09
,
LazyColumnForIndexed
, а аналоги строк устарели. Как
LazyColumn
используется, где, почему и как использовать
rememberLazyListState
?
Если вы можете предоставить полный пример с элементами, состоянием и прослушивателем onClick, это будет вам очень полезно.
2 ответа
Эта документация здесь описывает, как использовать
LazyColumn
вместо
LazyColumnFor
.
Особый интерес из документации:
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material.Text
val itemsList = (0..5).toList()
val itemsIndexedList = listOf("A", "B", "C")
LazyColumn {
items(itemsList) {
Text("Item is $it")
}
item {
Text("Single item")
}
itemsIndexed(itemsIndexedList) { index, item ->
Text("Item at index $index is $item")
}
}
С
1.0.0-beta02
в <strong>
<tcode id="22868116"></tcode></strong> создает список с вертикальной прокруткой.
Что-то вроде:
val itemsList = (0..30).toList()
LazyColumn {
items(itemsList) {
Text("Item is $it")
}
}
В <strong>
<tcode id="22868118"></tcode></strong>- это объект состояния, который можно поднять для управления и наблюдения за прокруткой. Он создан через
rememberLazyListState
.
val listState = rememberLazyListState()
Его можно использовать для реагирования и прослушивания изменений положения прокрутки и макета элемента.
// Provide it to LazyColumn
LazyColumn(state = state) {
// Check if the first visible item is past the first item
if (listState.firstVisibleItemIndex > 0){
//...
}
}
или для управления положением прокрутки:
// Remember a CoroutineScope to be able to launch
val coroutineScope = rememberCoroutineScope()
LazyColumn(state = listState) {
// ...
}
lazyListState.animateScrollToItem(lazyListState.firstVisibleItemIndex)
Button (
onClick = {
coroutineScope.launch {
// Animate scroll to item with index=5
listState.animateScrollToItem(index = 5)
}
}
){
Text("Click")
}