如何将动态创建的单选按钮设置到RadioGroup中?

2023-12-28

我有动态创建的单选按钮。

                     LinearLayout linLayRoot = (LinearLayout)dialogView.findViewById(R.id.dialog_layout_root);
         RadioGroup radGp = new RadioGroup(this);
         linLayRoot.addView(radGp);

         for (String dir : dirArray)
         {

                LinearLayout linLayNew = new LinearLayout(this);
                linLayNew.setGravity(0x10);
                RadioButton radBut = new  RadioButton(this); /// <- this button does not work!
                radBut.setText("");
                TextView tv = new TextView(this);
                tv.setText(dir);
                tv.setPadding(10, 0, 20, 0);
                ImageView ivs = new ImageView(this);

                linLayNew.addView(radBut);
                linLayNew.addView(tv);
                linLayNew.addView(ivs);

                radGp.addView(linLayNew);

         }

            RadioButton radBut1 = new  RadioButton(this); /// <- this button works!
            radBut1.setId(11);
            radBut1.setText("a1");
            radGp.addView(radBut1);

            RadioButton radBut2 = new  RadioButton(this); /// <- this button works!
            radBut2.setId(12);
            radBut2.setText("b2");
            radGp.addView(radBut2);

         radGp.setOnCheckedChangeListener( new OnCheckedChangeListener()
         {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                Toast.makeText(getApplicationContext(), String.valueOf(checkedId) , Toast.LENGTH_SHORT).show();
            }
         });

但正如您从上面的评论中看到的,它们并没有真正起作用,即似乎它们没有绑定到 radGp...也许是因为它们位于单独的 linlearlayout 中?

Thanks!


the 无线电集团 http://developer.android.com/reference/android/widget/RadioGroup.html has an addView http://developer.android.com/reference/android/widget/RadioGroup.html#addView%28android.view.View,%20int,%20android.view.ViewGroup.LayoutParams%29它将视图作为输入。从这里看来您可以将 LinearLayout 添加为子项。 RadioGroup 实际上是一个 LinearLayout。

UPDATE

我检查了来源

@Override
public void addView(View child, int index, ViewGroup.LayoutParams params) {
    if (child instanceof RadioButton) {
        final RadioButton button = (RadioButton) child;
        if (button.isChecked()) {
            mProtectFromCheckedChange = true;
            if (mCheckedId != -1) {
                setCheckedStateForView(mCheckedId, false);
            }
            mProtectFromCheckedChange = false;
            setCheckedId(button.getId());
        }
    }

    super.addView(child, index, params);
}

这清楚地表明,如果我们嵌套收音机,那么它将无法工作。 所以我想,你必须手动操作,别无他法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将动态创建的单选按钮设置到RadioGroup中? 的相关文章

随机推荐