Kotlin/Android - 只能选中一个 ToggleButton
Kotlin/Android - Only one ToggleButton can be checked
我有一组 ToogleButton。在 adapter
中,我将它们放在一个数组中:
val groupToggleButtons = arrayOf( holder.one,
holder.two,
holder.three,
holder.four,
holder.five,
holder.six)
所以,这六人一组,只能勾选一个。如果我按下按钮 holder.two
,然后按下 holder.six
,holder.two
必须按时取消选中 。得到它?
我已经尝试了下一个逻辑,但没有成功......当然 findViewById 不起作用(因为它是一个适配器),但后来我不知道该怎么做,尝试了很多逻辑......没有做了我想做的。这是代码:
groupToggleButtons.forEach {
it.setOnCheckedChangeListener { v, isChecked ->
val buttonId = v.id
for (i in 0 until groupToggleButtons.size) {
if (i != buttonId) {
val buttonToOff = findViewById(i) as ToggleButton
buttonToOff.isChecked = false
}
}
}
}
我相信这就是您要实现的目标。
for(toggle in groupToggleButtons) {
toggle.setOnCheckedChangeListener { v, isChecked ->
if (isChecked) groupToggleButtons.forEach {
if (it != toggle) it.isChecked = false
}
}
}
您必须从数组中筛选出所有选中的按钮并取消选中它们:
groupToggleButtons.forEach {
it.setOnCheckedChangeListener { v, isChecked ->
if (isChecked)
groupToggleButtons.filter { it != v && it.isChecked }.forEach { it.isChecked = false }
}
}
我有一组 ToogleButton。在 adapter
中,我将它们放在一个数组中:
val groupToggleButtons = arrayOf( holder.one,
holder.two,
holder.three,
holder.four,
holder.five,
holder.six)
所以,这六人一组,只能勾选一个。如果我按下按钮 holder.two
,然后按下 holder.six
,holder.two
必须按时取消选中 。得到它?
我已经尝试了下一个逻辑,但没有成功......当然 findViewById 不起作用(因为它是一个适配器),但后来我不知道该怎么做,尝试了很多逻辑......没有做了我想做的。这是代码:
groupToggleButtons.forEach {
it.setOnCheckedChangeListener { v, isChecked ->
val buttonId = v.id
for (i in 0 until groupToggleButtons.size) {
if (i != buttonId) {
val buttonToOff = findViewById(i) as ToggleButton
buttonToOff.isChecked = false
}
}
}
}
我相信这就是您要实现的目标。
for(toggle in groupToggleButtons) {
toggle.setOnCheckedChangeListener { v, isChecked ->
if (isChecked) groupToggleButtons.forEach {
if (it != toggle) it.isChecked = false
}
}
}
您必须从数组中筛选出所有选中的按钮并取消选中它们:
groupToggleButtons.forEach {
it.setOnCheckedChangeListener { v, isChecked ->
if (isChecked)
groupToggleButtons.filter { it != v && it.isChecked }.forEach { it.isChecked = false }
}
}