1

我有一个疑问......在我的Android应用程序中,我有一个活动,它的GUI是从我的SQLite数据库中的某些数据动态创建的......我没有遇到任何问题并且工作正常......

在这个活动中,有一堆 TextView's 和 RadioGroup's 和 RadioButton's 是在 for 循环内创建的,并且 RadioButton 的数量会因此循环内的条件而有所不同......就像这样:

for(int i=0;i<numFilasFormulario;i++){

            TextView pregunta = new TextView(this);
            pregunta.setText(c.getString(c.getColumnIndex("texto")));
            pregunta.setGravity(Gravity.LEFT);
            pregunta.setTextColor(Color.rgb(0, 0, 0));
            pregunta.setTextSize(15);
            pregunta.setLayoutParams(params);
            ll.addView(pregunta);

            if(c.getString(c.getColumnIndex("tipopregunta")).equals("Si o No")){

                RadioGroup rg = new RadioGroup(this);
                ll.addView(rg);

                RadioButton b1 = new RadioButton(this);
                b1.setText("SI");
                rg.addView(b1);

                RadioButton b2 = new RadioButton(this);
                b2.setText("NO");
                rg.addView(b2);

            }else{

                if(c.getString(c.getColumnIndex("tipopregunta")).equals("Seleccion Simple")){

                    RadioGroup rg = new RadioGroup(this);
                    ll.addView(rg);

                    RadioButton b1 = new RadioButton(this);
                    b1.setText("SI");
                    rg.addView(b1);

                    RadioButton b2 = new RadioButton(this);
                    b2.setText("NO");
                    rg.addView(b2);

                    RadioButton b3 = new RadioButton(this);
                    b3.setText("N/A");
                    rg.addView(b3);

                }
            }
            c.moveToNext();
        }

所以我的问题是如何获取用户选择的 RadioButton 的值......我的意思是,我是否必须为每个 RadioButton 调用 setOnClickListener() 方法?或者我必须为每个 RadioGroup 做这件事?我在哪里声明这些语句:在 for 循环内部还是外部?还是有其他方法?

我非常非常迷失在这里!任何形式的帮助将不胜感激!谢谢!

4

1 回答 1

0

只有一种方法可以使用OnCheckedChangeListener 您可以创建每个侦听器并将其分配给循环中的 RadioGroup,但我不建议这样做。您可以在资源中创建多个 ID,并在循环之前只创建一个侦听器,并在循环中将其分配给您的 RadioGroup(您的 Radiogroup 需要设置在资源中创建的 ID)。这是示例:

    OnCheckedChangeListener listener = new OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            switch (group.getId()) {
            case R.id.myradio_group1:
                // DO your work here
                break;

            default:
                break;
            }
        }
    };

    // your loop is here
    for(int i=0;i<numFilasFormulario;i++){
        ....
        RadioGroup rg = new RadioGroup(this);
        rg.setId(R.id.myradio_group1); // or simply just using rg.setId(i+1000);
        // make sure 1000, 1001, 1002, ... is already create at Resource
        ....
    }
于 2012-10-29T14:34:45.263 回答