Jetpack Compose 列表

延迟列表

系统会对所有列表项进行组合和布局,无论它们是否可见,因此如果您需要显示大量列表项(或长度未知的列表),则使用 `Column` 等布局可能会导致性能问题。

Compose 提供了一组组件,这些组件只会对在组件视口中可见的列表项进行组合和布局。这些组件包括 `LazyColumn``LazyRow`

`item()` 用于添加单个列表项,`items(Int)` 用于添加多个列表项:

ts 复制代码
LazyColumn(modifier = modifier.fillMaxWidth(), contentPadding = PaddingValues(top = 100.dp)) {
    // Add a single item
    item {
        Text(modifier = Modifier.fillMaxWidth().height(50.dp).background(color = Color.Black).padding(all = 15.dp),
            text = "First item",
            color = Color.White)
    }
    // Add 5 items
    items(5) { index ->
        Text(modifier = Modifier.fillMaxWidth().height(50.dp).background(color = Color.Blue).padding(all = 15.dp),
            text = "Item: $index",
            color = Color.White)
    }
    // Add another single item
    item {
        Text(modifier = Modifier.fillMaxWidth().height(50.dp).background(color = Color.Green).padding(all = 15.dp),
            text = "Last item")
    }
}

还有许多扩展函数可用于添加列表项的集合,例如 List。借助这些扩展函数,我们可以轻松迁移上述 `Column` 示例

ts 复制代码
@Composable
private fun example2(modifier:Modifier = Modifier) {
    val messages = arrayListOf("Title1","Title2", "Title3", "Title4", "Title5",  "Title6",  "Title7",  "Title8")
    /**
     * import androidx.compose.foundation.lazy.items
     */
    LazyColumn(modifier = modifier, contentPadding = PaddingValues(top = 100.dp)) {
        items(messages) { message ->
            MessageRow(message)
        }
    }
}

@Composable
private fun MessageRow(message:String) {
    ElevatedCard(
        elevation = CardDefaults.cardElevation(
            defaultElevation = 6.dp
        ),
        modifier = Modifier
            .fillMaxWidth()
            .height(150.dp)
            .padding(start = 15.dp, end = 15.dp, top = 15.dp)
    ) {
        Text(
            text = message,
            modifier = Modifier
                .padding(16.dp),
            textAlign = TextAlign.Center,
        )
    }
}

上一篇 Jetpack Compose 分页器 Pager

相关推荐
传奇开心果编程1 天前
【Jetpack Compose基础语法学与练】第6课 TextField文本输入,字符串状态与输入交互
学习·前端框架·kotlin·android jetpack
alexhilton6 天前
从零开始的架构测试套件
android·kotlin·android jetpack
惟恋惜7 天前
第 2 章 · 布局与 Modifier 语义:用代码画界面(下篇)
android jetpack
天空之城--8 天前
Android Jetpack Compose 状态管理浅析
android·android jetpack
我命由我123458 天前
Android Compose 开发,使用 ConstraintLayout,但是引入的是旧的 ConstraintLayout
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
我命由我123458 天前
Android 开发问题:android.permission.CAMERA...duplicated with element declared at
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
我命由我123458 天前
Android 控件 - ListAdapter
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
天空之城--9 天前
Android行业一周动态:编码趋势与行业资讯汇总
android·性能优化·架构·kotlin·android jetpack
我命由我123459 天前
Compose Codelab 学习 - Jetpack Compose 中的状态
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
撩得Android一次心动10 天前
Jetpack Compose 知识点整理1【个人用】
android·学习·kotlin·android jetpack·compose