Rya*_*ley 14 android kotlin android-jetpack androidx android-jetpack-compose
在 Jetpack Compose 中,如何在仅布置可见项目的同时显示大数据列表,而不是在初始布局过程中组合和布置每个项目?这将是类似RecyclerView与ListView在View工具包。
可以使用for循环将 aColumn中的所有组件放在 a中VerticalScroller,但这会导致丢帧和大量项目的性能不佳。
注意:这是一个规范的自我回答问题,以抢先/处理类似的问题
Rya*_*ley 31
Jetpack ComposeRecyclerView或ListViewJetpack Compose 中的等效组件LazyColumn用于垂直列表和LazyRow水平列表。它们仅组成和布置当前可见的项目。
您可以通过将数据格式化为列表并使用@Composable回调传递它来使用它,该回调为列表中的给定项目发出 UI。例如:
val myData = listOf("Hello,", "world!")
LazyColumn {
items(myData) { item ->
Text(text = item)
}
}
Run Code Online (Sandbox Code Playgroud)
val myData = listOf("Hello,", "world!")
LazyRow {
items(myData) { item ->
Text(text = item)
}
}
Run Code Online (Sandbox Code Playgroud)
您还可以一次指定单个项目:
LazyColumn {
item {
Text("Hello,")
}
item {
Text("world!")
}
}
Run Code Online (Sandbox Code Playgroud)
LazyRow {
item {
Text("Hello,")
}
item {
Text("world!")
}
}
Run Code Online (Sandbox Code Playgroud)
还有索引变体,除了提供项目本身之外,还提供集合中的索引:
val myData = listOf("Hello,", "world!")
LazyColumn {
itemsIndexed(myData) { index, item ->
Text(text = "Item #$index is $item")
}
}
Run Code Online (Sandbox Code Playgroud)
val myData = listOf("Hello,", "world!")
LazyRow {
itemsIndexed(myData) { index, item ->
Text(text = "Item #$index is $item")
}
}
Run Code Online (Sandbox Code Playgroud)
在以前的版本中,这些 API 被称为AdapterList、LazyColumnItems/LazyRowItems和LazyColumnFor/ LazyRowFor。
| 归档时间: |
|
| 查看次数: |
9112 次 |
| 最近记录: |