android - 如何仅选择列表中的一项(LazyColumn)?

标签 android list android-jetpack-compose android-jetpack lazycolumn

我有一份地址列表,我希望我的用户仅选择一个送货地址

最佳答案

您只需要跟踪选择的索引即可。

@Composable
fun SingleSelectionList() {
    var selectedIndex by remember {
        mutableStateOf(-1)
    }
    LazyColumn(
        Modifier
            .fillMaxSize()
            .selectableGroup() // Optional, for accessibility purpose
    ) {
        items(count = 10) { index ->
            Text(
                text = "Item $index",
                Modifier
                    .fillMaxWidth()
                    .selectable(
                        selected = selectedIndex == index,
                        onClick = {
                            selectedIndex = index
                        }
                    )
                    .background(
                        if (selectedIndex == index) Color.Gray
                        else Color.Transparent
                    )
                    .padding(8.dp)
            )
        }
    }
}

如果您想允许取消选择,请将 onClick 更改为:

selectedIndex = if (selectedIndex == index) -1 else index

关于android - 如何仅选择列表中的一项(LazyColumn)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72531840/

相关文章:

android - 如何在android中的纵向锁定屏幕中检测我的屏幕方向?

android - 如何为可下载字体提供自定义字体提供程序?

android - Facebook Android SDK 自动登录

android - 按下 Compose Surface 时更改 alpha(可点击修改器)

android - 最后一个元素在 LazyColumn 中不可见。喷气背包组成

android - 在 Android Studio 0.2.8 中添加库

python - 如何只打印按字母顺序嵌套在列表、字典中的内部字典的键?

使用 PowerShell 列出目录中超过 100 行的所有文本文件

list - 喜欢 first 和 rest 而不是 car 和 cdr 的 lisp 如何接近像 cdaddr 这样的组合?

drawable - 如何通过字符串获取可绘制资源?