如何在动态广播组中以编程方式检查单选按钮?

时间:2018-04-24 10:22:05

标签: android kotlin

我有一个单选按钮列表。我希望在应用程序首次启动时选择一个。

然后我将从无线电组中选择一些将被取消选择的其他单选按钮。

这是我的代码:

for (x in taskTypes) {
        var radioButton = RadioButton(context)
        radioButton.setOnCheckedChangeListener { button: CompoundButton?, b: Boolean  ->
            if (b) {
                ......

            }
        }

        taskRadioGroup.addView(radioButton)
    }

5 个答案:

答案 0 :(得分:0)

如果您使用radioGroup,则应自动取消选择之前选择的radioButton。如果您希望在启动活动时选择特定radioButton,则只需在onCreate()中添加以下行:

yourDesiredRadioButton.isChecked = true;

答案 1 :(得分:0)

您可以使用setTag();方法为群组中的所有按钮提供唯一标识,并使用getTag()

检查/更改属性

答案 2 :(得分:0)

如果要选择要选择的第一个RadioButton,可以执行以下操作:

var isChecked = true;

for (x in taskTypes) {
    var radioButton = RadioButton(context)

    if(isChecked){
        isChecked = false;
        radioButton.checked = true;
     }

    taskRadioGroup.addView(radioButton)
}

 taskRadioGroup.setOnCheckedChangeListener { button: CompoundButton?, b: Boolean  ->
        if (b) {
            ......

        }
    }

答案 3 :(得分:0)

我想在首次启动应用程序时选择一个

在创建方法

 hardradioButton!!.isChecked = true

制作您的radioGroup的监听器 在创建方法

 radioGroup!!.setOnCheckedChangeListener(this)

实施OnCheckedChangeListener

override fun onCheckedChanged(group: RadioGroup, checkedId: Int) {
        when (checkedId) {
            R.id.hard_radiobuttonm -> {
                //do whatever
            }

            R.id.ok_radiobuttonm -> {
               //do whatever
            }

            R.id.easy_radiobuttonm -> {
               //do whatever
            }


            else -> {
            }
        }

    }

答案 4 :(得分:0)

我不确定为什么它总是check第一个RadioButton,即使在RadioGroup中添加了ALL无线电。我的测试也证实了你的错误(也许不是bug,我只是不确定原因)。

以下是我解决问题的方法:

var radioGroup = RadioGroup(applicationContext)

for (i: Int in 0..4){
    var radio = RadioButton(applicationContext)
    radio.setText("button position ${i+1}")

    radioGroup.addView(radio)
    Log.d("LOG", "Working on radio ${i+1}")
}

radioGroup.check(0)

linearParent.addView(radioGroup)

注意我是如何通过执行check(0)的{​​{1}}来设置第一个无线电的。这是因为每当我从radioGroup本身设置时,该广播将始终处于radio状态:

checked