如何为动态创建的单选按钮添加侦听器?

时间:2015-02-04 22:34:02

标签: android android-listview android-adapter android-radiogroup android-radiobutton

我有ListView个问题。在每一行中都有一个问题,RadioGroup有可能的答案。并非所有问题都有相同数量的答案,因此我会在自定义RadioButtons中动态添加ListAdapter。我的问题是如何将Listener添加到这些动态创建的RadioButtons。我的代码:

RadioGroup rg = (RadioGroup) convertView.findViewById(R.id.question);
        rg.removeAllViews();
        for (String qA : question.answers) {
            RadioButton rb = new RadioButton(getContext());
            rb.setText(qA.toString());
            rg.addView(rb);

        }

        rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch(checkedId) {
                    //WHAT SHOULD I PUT HERE?
                }
            }
        });

3 个答案:

答案 0 :(得分:0)

Maby是这样的:

@Override public void onCheckedChanged(RadioGroup group, int checkedId) {
    RadioButton btn = (RadioButton)findViewById(checkedId);
}

然后用btn的东西? :)

答案 1 :(得分:0)

查找选中的按钮

View checkedButton = rg.findViewById(checkedId);

查找已选中按钮的索引

int checkedIndex = rg.indexOfChild(checkedButton);

在执行上述操作之前,您必须将id设置为注释rb.setId(count)中提到的按钮。对于组内的每个按钮,Count必须是唯一的。

答案 2 :(得分:0)

1首先在适配器中创建 CompoundButton.OnCheckedChangeListener 的全局变量,例如私有CompoundButton.OnCheckedChangeListener listener

2秒后,您必须在创建单选按钮时在单选按钮上附加侦听器变量。

在将数据或值与ui绑定时,需要三分之三的调用

listener = new CompoundButton.OnCheckedChangeListener() 
{
            @Override
            public void onCheckedChanged ( CompoundButton buttonView, boolean isChecked ) 
{

            }
        };