miqbaldc
11/03/2021, 1:50 AMHashSet
as remember { mutableStateOf(hashSetOf()) }
See video & snippet code in 🧵miqbaldc
11/03/2021, 1:52 AM@Preview
@Composable
fun FilterChipGroupPreview() {
// data from network
val items = listOf("Abc", "Def", "Ghi")
// hoist this inside activity / fragment
val itemsSelected = remember { mutableStateOf(hashSetOf("Abc")) }
FilterChipGroup(
items = items,
itemsSelected = itemsSelected.value,
onClickChip = { clickedLabel, wasSelected ->
// val previousLabelsSelected = itemsSelected.value
if (itemsSelected.value.contains(clickedLabel) && !wasSelected) {
itemsSelected.value.remove(clickedLabel)
} else {
itemsSelected.value.add(clickedLabel)
}
// uncomment this also doesn't work in preview, also in the emulator fails
// but, works in real devices (see video in this thread)
// itemsSelected.value = previousLabelsSelected
}
)
}
miqbaldc
11/03/2021, 1:56 AMFilterChipGroup
contentsNathan Castlehow
11/03/2021, 3:04 AMNathan Castlehow
11/03/2021, 3:06 AMmiqbaldc
11/03/2021, 10:46 AMnotice the lags, I’m not sure, does this related to the compose, or it’s just a RecyclerView doing the recyclinghere’s the video demo
miqbaldc
11/03/2021, 10:48 AMZach Klippenstein (he/him) [MOD]
11/03/2021, 10:18 PMZach Klippenstein (he/him) [MOD]
11/03/2021, 10:19 PMZach Klippenstein (he/him) [MOD]
11/03/2021, 10:22 PMmutableStateMapOf
instead of hashSetOf
(a map can act as a set, just use the keys and ignore values)
• Use an immutable set (setOf("Abc")
) and then create a new set each time inside onClickChip
.miqbaldc
11/04/2021, 5:14 AMZach Klippenstein (he/him) [MOD]
11/04/2021, 4:22 PMmiqbaldc
11/05/2021, 1:18 AMval previousLabelsSelected = itemsSelected.value
if (previousLabelsSelected.contains(clickedLabel) && !wasSelected) {
previousLabelsSelected.remove(clickedLabel)
} else {
previousLabelsSelected.add(clickedLabel)
}
itemsSelected.value = previousLabelsSelected