如何根据动态生成的RadioGroup的ID来检查RadioButtons

时间:2016-05-06 10:49:28

标签: android radio-button radio-group android-radiogroup

我已经为从数据库中提取的问题动态生成了多个RadioGroup,并且我还连续地为RadioGroups分配了ID。

现在,我想从所有RadioGrouips中获取所有已检查的RadioButton,以便将它们存储在数据库中。

如何获取与每个RadioGroup ID相关的所有这些RadioGroup及其检查的RadioButtons?

任何尝试解决方案都将不胜感激!

if (c.moveToFirst()) {
            do {

                String question = c.getString(1);
                String option1 = c.getString(2);
                String option2 = c.getString(3);
                String option3 = c.getString(4);

                // add text view
                qtxt = new TextView(getApplicationContext());
                counter4q += 1;
                qtxt.setId(counter4q);
                qtxt.setText(question);
                qtxt.setTextSize(15);
                qtxt.setTextColor(getResources().getColor(R.color.black, null));
                ll.addView(qtxt);

                questions.add(qtxt.getText().toString());
                Log.d("arrayq",questions.toString());

                Log.d("question", qtxt.getText().toString());
                String qid = String.valueOf(counter4q);
                Log.d("questionid", qid);

                //create the RadioGroup
                rg = new RadioGroup(getApplicationContext());
                rg.setOrientation(RadioGroup.VERTICAL);
                counter4rg += 1;
                rg.setId(counter4rg);

                rgIDs.add(String.valueOf(rg.getId()));
                Log.d("arrayrgid", rgIDs.toString());

                Log.d("rg", String.valueOf(rg.getId()));
                    String rgid = String.valueOf(counter4rg);
                Log.d("rgid", rgid);

                //add radio buttons
                o1 = new RadioButton(getApplicationContext());
                o2 = new RadioButton(getApplicationContext());
                o3 = new RadioButton(getApplicationContext());

                counter4rb += 1;
                o1.setId(counter4rb);

                Log.d("o1", o1.getText().toString());
                String o1id = String.valueOf(counter4rb);
                Log.d("o1id", o1id);

                counter4rb += 1;
                o2.setId(counter4rb);

                Log.d("o2", o2.getText().toString());
                String o2id = String.valueOf(counter4rb);
                Log.d("o2id", o2id);

                counter4rb += 1;
                o3.setId(counter4rb);

                Log.d("o3", o3.getText().toString());
                String o3id = String.valueOf(counter4rb);
                Log.d("o3id", o3id);

                o1.setText(option1);
                o2.setText(option2);
                o3.setText(option3);

                o1.setTextColor(getResources().getColor(R.color.black, null));
                o2.setTextColor(getResources().getColor(R.color.black, null));
                o3.setTextColor(getResources().getColor(R.color.black, null));

                //the RadioButtons are added to the radioGroup instead of the layout
                rg.addView(o1);
                rg.addView(o2);
                rg.addView(o3);

                //you add the whole RadioGroup to the layout
                ll.addView(rg);

            } while (c.moveToNext());
        }

1 个答案:

答案 0 :(得分:0)

这样做:

int o1_Id = o1.getId();
int o2_Id = o2.getId();
int o3_Id = o3.getId();

获取RadioGroups的所有ID以创建列表:

List<Integer> ids = new ArrayList<>();

然后添加ID:

 ids.add(counter4rg);

获得:

    for( int i=0; i< ids.size(); i++) {
        System.out.println(ids.get(i));
    }

要检查RadioButtions:

     rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()            {
        @Override
        public void onCheckedChanged(RadioGroup arg0, int selectedId) {
            RadioButton radioButton = (RadioButton) findViewById(selectedId);
            //add to your list

        }
     });