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.sixholder.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 }
    }
}