Начиная с Jetpack Compose 1.0.0-alpha09
LazyColumn
, LazyColumnForIndexed
и аналоги строки устарели. Как используется LazyColumn
, где, почему и как я должен использовать rememberLazyListState
?
Если вы можете предоставить полный пример с элементами, состоянием и прослушивателем onClick, это будет очень полезно.
В этой документации описывается, как использовать 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")
}
}
Я думаю, это как другие remember
s. Вы сохраняете положение прокрутки внутри функции Composable
, верно?
Вам нужно импортировать import androidx.compose.foundation.lazy.items
С помощью 1.0.0-beta06
LazyColumn создает список с вертикальной прокруткой.
Что-то вроде:
val itemsList = (0..30).toList()
LazyColumn {
items(itemsList) {
Text("Item is $it")
}
}
LazyListState — это объект состояния, который можно поднять для контроля и наблюдения за прокруткой. Он создается через rememberLazyListState
.
val listState = rememberLazyListState()
Его можно использовать для реагирования и прослушивания изменений положения прокрутки и расположения элементов.
// Provide it to LazyColumn
LazyColumn(state = liststate) {
// 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")
}
Спасибо. Не могли бы вы показать, как использовать
rememberLazyListState
тоже? Это для сохранения и восстановления положения прокрутки?