Функция rememberLazyListState
Функция rememberLazyListState возвращает
LazyListState
и сохраняет его между перерисовками.
Начальный видимый пункт задают через
initialFirstVisibleItemIndex
и initialFirstVisibleItemScrollOffset.
Объект передают в state
у
LazyColumn
или
LazyRow.
Синтаксис
val listState = rememberLazyListState()
Параметры
| Параметр | Описание |
|---|---|
initialFirstVisibleItemIndex |
Индекс первого видимого пункта при первом показе.
По умолчанию 0.
|
initialFirstVisibleItemScrollOffset |
Смещение первого видимого пункта в пикселях.
По умолчанию 0.
|
Пример
Давайте привяжем состояние к LazyColumn:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.material3.Text
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val listState = rememberLazyListState()
LazyColumn(state = listState) {
item { Text(text = "abcde") }
item { Text(text = "12345") }
}
}
}
}
На экране список начнётся с первого пункта, положение прокрутки сохранится при повороте экрана.
Пример
Давайте откроем список сразу на втором пункте:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.material3.Text
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val listState = rememberLazyListState(
initialFirstVisibleItemIndex = 1,
)
LazyColumn(state = listState) {
item { Text(text = "abcde") }
item { Text(text = "12345") }
}
}
}
}
На экране сразу будет видна строка "12345",
первая уйдёт вверх за край.
Смотрите также
-
класс
LazyListState,
который возвращает rememberLazyListState -
функция
rememberLazyGridState,
аналог для ленивой сетки -
метод
scrollToItem,
который меняет положение списка -
функция
LazyColumn,
которой передают state