如何在列表中只选择一个项目(LazyColumn)?

问题描述 投票:0回答:1

我有一个地址列表,我希望我的用户只选择一个地址进行运输

android list android-jetpack-compose android-jetpack lazycolumn
1个回答
3
投票

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

@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
© www.soinside.com 2019 - 2024. All rights reserved.