0Pricing
Android Academy · Урок

Списки с 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 — локальная установка не требуется.

Все уроки этого курса

  1. Column, Row и Box
  2. Система Modifier
  3. Выравнивание и расположение
  4. Списки с LazyColumn
← Назад к Android Academy