Списки с LazyColumn
Эффективно отображайте прокручиваемые списки
«Списки с LazyColumn» — бесплатный урок Android Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Android Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Android Academy содержит 4 уроков всего.
Почему не просто Column?
Column создаёт все дочерние элементы сразу. Для длинного или прокручиваемого списка это расходует память и замедляет интерфейс. Нужен список, который создаёт только видимые элементы.
Знакомьтесь: LazyColumn
LazyColumn — это прокручиваемый вертикальный список, который создаёт только элементы, находящиеся на экране, подобно старому RecyclerView, но гораздо проще.
LazyColumn {
items(messages) { msg ->
Text(text = msg)
}
}Функция items()
Внутри лямбды LazyColumn вызовите items(list) и передайте ей компонуемый элемент для каждого элемента списка. Compose будет создавать их по мере прокрутки пользователем.
LazyColumn {
items(users) { user ->
Text(text = user.name)
}
}Это не обычный цикл
Не используйте обычный цикл for внутри LazyColumn — это лишает список ленивой загрузки. Всегда используйте items() (или itemsIndexed()), чтобы Compose мог создавать элементы по требованию.
Один элемент-заголовок
Используйте item { } (в единственном числе), чтобы добавить один фиксированный элемент, например заголовок, перед элементами списка.
LazyColumn {
item { Text("Header") }
items(data) { Text(it) }
}itemsIndexed
Если Вам нужна позиция элемента, используйте itemsIndexed, чтобы получить и индекс, и сам элемент.
LazyColumn {
itemsIndexed(data) { index, value ->
Text(text = "$index: $value")
}
}Ключи для стабильности
Задайте стабильный key для каждого элемента, чтобы Compose мог правильно отслеживать элементы при изменении списка, повышая производительность и улучшая анимации.
items(users, key = { it.id }) { user ->
Text(user.name)
}Интервалы между элементами
LazyColumn принимает verticalArrangement и contentPadding, чтобы задавать интервалы между элементами и отступы по краям списка.
LazyColumn(
verticalArrangement = Arrangement.spacedBy(8.dp),
contentPadding = PaddingValues(16.dp)
) {
items(data) { Text(it) }
}LazyRow
Для горизонтально прокручиваемых списков есть также LazyRow — тот же API, но другое направление. Он отлично подходит для каруселей карточек.
LazyRow {
items(images) { img ->
Image(painter = img, contentDescription = null)
}
}Встроенная прокрутка
Не добавляйте модификатор прокрутки к LazyColumn — она прокручивается автоматически. Добавление verticalScroll вызовет конфликт и приведёт к сбою. Ленивые списки управляют прокруткой самостоятельно.
Собираем всё вместе
Список элементов с заголовком, ключами и интервалами.
@Composable
fun MessageList(messages: List<Message>) {
LazyColumn(
verticalArrangement = Arrangement.spacedBy(8.dp)
) {
item { Text("Inbox") }
items(messages, key = { it.id }) { msg ->
Text(text = msg.text)
}
}
}Быстрая проверка
В чём главное преимущество LazyColumn перед прокручиваемым Column?
Итоги
LazyColumn:
- Создаёт только видимые элементы — это эффективно для длинных списков.
- Используйте
items()/itemsIndexed(), а не циклfor. - Добавляйте
keyдля стабильности; используйтеitem { }для заголовков. - Прокручивается автоматически — модификатор прокрутки не нужен.
LazyRow— горизонтальная версия.
Часто задаваемые вопросы
Урок «Списки с LazyColumn» бесплатный?
Да — полный текст урока «Списки с LazyColumn» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Android Academy, подпишись на CoddyKit PRO. Курс Android Academy содержит 4 уроков всего.
Чему я научусь в уроке «Списки с LazyColumn»?
Эффективно отображайте прокручиваемые списки Ты практикуешь Android Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Android Academy?
Предыдущий опыт не требуется. Android Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Списки с LazyColumn»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Android Academy?
Да. Каждый урок Android Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Column, Row и Box
- Система Modifier
- Выравнивание и расположение
- Списки с LazyColumn