Thomas
12/01/2020, 12:56 PM@Composable
fun ThirdRow(currentPos: Int, checksums: List<String>) {
val items = if (checksums.isNotEmpty())
df.getFiles(checksums[currentPos]) else emptyList()
LazyColumnFor(items,
modifier = Modifier.fillMaxSize().padding(8.dp),
itemContent = { item ->
ListItem(text = { Text(item.parent) },
secondaryText = { Text(item.name) })
})
}
jim
12/01/2020, 1:29 PM@Composable
fun ThirdRow(currentPos: Int, checksums: List<String>, selected: Set<String>, onSelectionToggled: (String)->Unit) {
val items = if (checksums.isNotEmpty())
df.getFiles(checksums[currentPos]) else emptyList()
LazyColumnFor(items,
modifier = Modifier.fillMaxSize().padding(8.dp),
itemContent = { item ->
if(selected.contains(item.checksum)) { ... }
else { ... }
// TODO: Add a click handler that will invoke onSelectionToggled(item.checksum) when selection is toggled.
ListItem(text = { Text(item.parent) },
secondaryText = { Text(item.name) })
})
}
Dominaezzz
12/01/2020, 1:45 PMModifier.toggleable(...)
Thomas
12/01/2020, 4:47 PM@Composable
fun ThirdRow(currentPos: Int, checksums: List<String>, selected: SnapshotStateMap<Int, Boolean>) {
val items = if (checksums.isNotEmpty())
df.getFiles(checksums[currentPos]) else emptyList()
LazyColumnForIndexed(items,
modifier = Modifier.fillMaxSize().padding(8.dp),
itemContent = { index, item ->
val current = selected[index] ?: false
ListItem(secondaryText = { Text(item.parent) },
modifier = Modifier.toggleable(onValueChange = {
selected[index] = !current
},
value = current)
.background(if (current)
Color.LightGray else Color.Transparent),
text = { Text(item.name) })
})
}
Works great. But still pondering if there isn't more builtin support in Compose... Again, thank you very much for helping with this one...Dominaezzz
12/01/2020, 4:50 PMModifier.toggleable(...)
is built in.jim
12/01/2020, 4:56 PMThomas
12/01/2020, 7:05 PM