Элемент LazyColumn с RadioButton
У меня есть LazyColumn, элементы которого имеют RadioButton и Text.
@Composable
private fun UserList(
modifier: Modifier,
users: List<User>,
selectedUser: User?,
onUserSelected: (User) -> Unit
) { // <-- This gets called again with the selectedUser
LazyColumn(modifier = modifier) { // <-- This also gets called again
items(
items = users,
key = { it.id }
) { user ->
Row( // <-- This never gets called
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 16.dp)
.height(48.dp)
.selectable(user.id == selectedUser?.id) {
onUserSelected(user)
}
) {
RadioButton(
selected = user.id == selectedUser?.id,
onClick = { onUserSelected(user) }
)
Text(
text = user.phone,
style = MaterialTheme.typography.subtitle1.merge(),
modifier = Modifier.padding(start = 16.dp)
)
}
}
}
}
Когда я нажимаю на элемент, слушатель
onUserSelected
вызывается, который изменяет состояние в ViewModel. И также делает это составное перекомпонованное. Но RadioButton никогда не выбирается.
После отладки я обнаружил: составной
UserList
перекомпонован как аргумент
selectedUser
меняется. Тем не менее
Row
composable никогда не перекомпоновывается.
Еще одно наблюдение: если я сначала прокручиваю элементы, а затем щелкаю по любому элементу, это работает абсолютно нормально и выбирается переключатель.
Более того, это нормально работало с Beta07.