Как деактивировать предыдущую нажатую ToggleButton?
У меня есть 5 ToggleButton, которые фильтруют отображаемые метки на карте по id(filterValues). Суть такая, если нажать на кнопку которая выводит 17 объектов, она выведет 17 объектов, если нажать другую кнопку которая выводит 5 объектов, выведутся 5 объектов, но прошлая нажатая кнопка останется активированной(хоть и никак не влияет на вывод меток). Так вот, как исправить данное поведение? Чтобы ToggleButton работали как будто RadioButton в группе, то есть только одна кнопка может быть активирована из всех. RadioButton не подходит под мою задачу, так как мне нужно чтобы можно было выключить все кнопки обратно. Я пробовал хранить прошлую нажатую кнопку и выключать её когда включается другая, но тогда метки не правильно отображались (если надо, то приложу код с этим вариантом)
Вот код, filters это список инициализированных кнопок:
val filters = listOf(filter1, filter2, filter3, filter4, filter5)
val filterValues =
mapOf(filter1 to 4L, filter2 to 2L, filter3 to 1L, filter4 to 5L, filter5 to 6L)
filters.forEach { filter ->
filter.setOnCheckedChangeListener { _, isChecked ->
clusterizedCollection.clear()
visibleIds.clear()
if (isChecked) {
visibleIds.add(filterValues[filter]!!)
} else {
visibleIds.addAll(listOf(1L, 2L, 4L, 5L, 6L))
}
updateMarkers()
}
}
UPD: Как уже было сказано, пробовал хранить предыдущую нажатую кнопку (lastChecked) и отключать её, пробовал много способов, но примерно суть была везде одна В данном коде проблема в том, что если активировать новую кнопку, то прошлая кнопка деактивируется, но метки выведутся неправильно (их отображается в два раза больше)
filters.forEach { filter ->
filter.setOnCheckedChangeListener { _, isChecked ->
if (isChecked) {
if (lastCheckedFilter != null && lastCheckedFilter != filter) {
lastCheckedFilter?.isChecked = false
}
lastCheckedFilter = filter
visibleIds.clear()
visibleIds.add(filterValues[filter]!!)
} else {
visibleIds.addAll(listOf(1L, 2L, 4L, 5L, 6L))
}
clusterizedCollection.clear()
updateMarkers()
}
}