跳到主要内容

列表点击事件

许多时候我们需要给列表项创建点击事件,本文解释了如何在 Jetpack Compose 中为你的列表项创建点击事件

1. 创建数据集

首先我们需要创建一个数据集,包含了常用水果名

// List 数据源
val fruits = arrayOf("Apple", "Apricot", "Almond", "Banana", "Betelnut", "Cherry", "Damson")

2. 创建列表项及点击事件

接下来需要我们声明列表项 FruitsRow 和点击事件 fruitClick


@Composable
private fun FruitsRow(item:String, clickEvent:()->Unit) {
Text(
text = item,
modifier = Modifier
.clickable(onClick = clickEvent)
.fillMaxWidth()
.wrapContentWidth(Alignment.CenterHorizontally)
.height(50.dp))
}

val fruitClick = { fruit: String, context: Context ->
Toast.makeText(context, fruit, Toast.LENGTH_SHORT).show()
}

FruitsRow 是一个高阶函数,它接受两个参数,一个是水果本身,另一个是点击事件函数

fruitClick 是一个Lambda 表达式,我们以此作为 FruitsRow 点击事件参数的值

3. 创建列表

最后使用 LazyColumn 创建列表即可,这样我们点击 item 的时候便会显示对应的水果名

val context = LocalContext.current

// 展示水果名列表
LazyColumn {
items(fruits){ fruit->
FruitsRow(fruit) { fruitClick(fruit, context) }
}
}