我在toggleButtons中有以下一组adapter(绿色的一组被选中,其他的未被选中):

android - Android/Kotlin-如何循环所有ToggleButton以使条件为if/else-LMLPHP

我试图找到一种解决方案,不要在所有toggleButtons中都这样做:

           holder.eleven.setOnCheckedChangeListener { buttonView, isChecked ->
                if(isChecked == true){
                    holder.eleven.setTextColor(Color.WHITE)
                } else {
                    holder.eleven.setTextColor(Color.BLACK)
                }
            }


我想有一个if / else语句,它将为所有toggleButtons做以前的工作(设置文本颜色)。

我试图指定一个数组在循环中运行,但不起作用:

           val array = arrayOf(R.id.one,
                    R.id.two,
                    R.id.three,
                    R.id.four,
                    R.id.five,
                    R.id.six,
                    R.id.seven,
                    R.id.eight,
                    R.id.nine,
                    R.id.ten,
                    R.id.eleven)
            for (i in array.indices) {
                array[i].setOnCheckedChangeListener { _, isChecked ->
                    if (isChecked) {
                        array[i].setTextColor(Color.WHITE)
                    } else {
                        array[i].setTextColor(Color.BLACK)
                    }
                }
             }


你知道我该怎么做吗?谢谢。

最佳答案

您的数组应为:

val array = arrayOf(
    holder.one, holder.two, holder.three, holder.four, holder.five, holder.six,
    holder.seven,  holder.eight, holder.nine, holder.ten, holder.eleven)


接着:

for (i in array.indices) {
    array[i].setOnCheckedChangeListener { _, isChecked ->
        array[i].setTextColor(if (isChecked) Color.WHITE else Color.BLACK)
    }
}


要么:

array.forEach {
   it.setOnCheckedChangeListener { v, isChecked ->
       v.setTextColor(if (isChecked) Color.WHITE else Color.BLACK)
   }
}

10-08 09:14