Метод itemsIndexed
Метод itemsIndexed приёмника
LazyListScope
работает как
items,
но в лямбду itemContent
передают индекс и сам элемент.
Удобно, когда номер строки нужен в интерфейсе
или зависит от чётности индекса.
Синтаксис
itemsIndexed(listOf("abcde", "12345")) { index, line ->
Text("$index: $line")
}
Параметры
| Параметр | Описание |
|---|---|
items |
Коллекция, по которой строят пункты списка. |
itemContent |
Лямбда с composable. Первый аргумент - индекс, второй - элемент коллекции. |
key |
Лямбда ключа по индексу и элементу. |
Пример
Давайте выведем индекс перед каждой строкой:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.itemsIndexed
import androidx.compose.material3.Text
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val lines = listOf("abcde", "12345")
LazyColumn {
itemsIndexed(lines) { index, line ->
Text(text = "$index: $line")
}
}
}
}
}
На экране первая строка начнётся с "0: abcde",
вторая - с "1: 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.itemsIndexed
import androidx.compose.material3.Text
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val lines = listOf("abcde", "12345")
LazyColumn {
itemsIndexed(lines) { index, line ->
Text(text = "${index + 1}: $line")
}
}
}
}
}
На экране строки начнутся с "1: abcde"
и "2: 12345".
Смотрите также
-
метод
items,
который не передаёт индекс в лямбду -
метод
item,
который добавляет один пункт -
класс
LazyListScope,
где объявлен itemsIndexed -
функция
LazyColumn,
в которой вызывают itemsIndexed