如何在 Jetpack Compose 中将 OnClick 添加到 LazyColumn 文本?

LEM*_*EMI 5 onclick android-jetpack

我刚刚制作了一个 LazyColumn 并放置了文本,但对于这些文本,我想添加一个 OnClick 属性,以便当单击列表中的每个文本时,它会调用不同的电话号码。例如:我希望如果我按“首先”的位置,应用程序会拨打电话号码(我在代码中输入的号码,我不希望它拨打我使用该应用程序时必须输入的号码) ,如果我按显示“第二个”的位置,应用程序会拨打另一个电话号码。我正在使用 Jetpack Compose,您能帮我吗?这就是我到目前为止所做的:

   @Composable
fun Hacerllamada(){
val intent = Intent (Intent.ACTION_CALL)
    intent.data = Uri.parse("tel: ")
}

@Preview
@Composable
fun Columna()  {
    LazyColumn(
        modifier = Modifier
            .fillMaxSize()
            .background(Color.Gray)
    ) {
        item{
        Text(
            text = "primero",
            fontSize = 32.sp,
            color = Color.White,
            modifier = Modifier.fillMaxWidth(),
            textAlign = TextAlign.Center)

        Text(text = "segundo",
            fontSize = 32.sp,
            color = Color.White,
            modifier = Modifier.fillMaxWidth(),
            textAlign = TextAlign.Center)

        Text(text = "tercero",
            fontSize = 32.sp,
            color = Color.White,
            modifier = Modifier.fillMaxWidth(),
            textAlign = TextAlign.Center)}
    }
}
Run Code Online (Sandbox Code Playgroud)

Aeg*_*gir 8

Hacerllamada()不应该是一个@Composable,只是一个正常的方法。然后您可以添加clickable到文本可组合项的修饰符。像这样的东西

fun makeACall(context: Context, phoneNumber: String) {
    val intent = Intent(Intent.ACTION_CALL)
    intent.data = Uri.parse("tel: $phoneNumber")
    //make sure you have permission to make a call
    startActivity(context, intent, bundleOf())
}


@Composable
fun Columna() {
    LazyColumn(
        modifier = Modifier
            .fillMaxSize()
            .background(Color.Gray)
    ) {
        item {
            PhoneNumber(title = "primero", phoneNumber = "11111")
            PhoneNumber(title = "segundo", phoneNumber = "22222")
            PhoneNumber(title = "tercero", phoneNumber = "33333")
        }
    }
}

@Composable
fun PhoneNumber(title: String, phoneNumber: String) {
    val context = LocalContext.current
    Text(
        text = title,
        fontSize = 32.sp,
        color = Color.White,
        modifier = Modifier
            .fillMaxWidth()
            .clickable { makeACall(context = context, phoneNumber = phoneNumber) },
        textAlign = TextAlign.Center
    )
}`enter code here`
Run Code Online (Sandbox Code Playgroud)