如何循环RadioGroup Android

时间:2014-12-09 06:41:46

标签: android radio-button radio-group

我是新手编程,我想创建一些测验应用程序。  所有答案只需使用单选按钮用户必须选择:1或2或3或4,所有问题都有相同的radiobutton文本,答案只是从1到4。  我已经阅读了如何循环动态只是radiobutton但如何循环RadioGroup因为我只需要每个问题的数字并插入数组,

这是我的xml:

        <RadioGroup
            android:id="@+id/radioGroup1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >


            <RadioButton
                android:id="@+id/radio0"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textSize="12sp"
                android:textColor="@color/black"
                android:text="0"
                android:button="@null"
                android:drawableTop="@android:drawable/btn_radio" 
                android:gravity="center"
                android:layout_weight="1"/>

            <RadioButton
                android:id="@+id/radio1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textSize="12sp"
                android:textColor="@color/black"
                android:text="1" 
                android:button="@null"
                android:drawableTop="@android:drawable/btn_radio" 
                android:gravity="center"
                android:layout_weight="1"/>

            <RadioButton
                android:id="@+id/radio2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textSize="12sp"
                android:textColor="@color/black"
                android:text="2" 
                android:button="@null"
                android:drawableTop="@android:drawable/btn_radio" 
                android:gravity="center"
                android:layout_weight="1"/>

            <RadioButton
                android:id="@+id/radio3"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textSize="12sp"
                android:textColor="@color/black"
                android:text="3" 
                android:button="@null"
                android:drawableTop="@android:drawable/btn_radio" 
                android:gravity="center"
                android:layout_weight="1" />

        </RadioGroup>

这就是结果:http://tinypic.com/r/2uzs50g/8

我想如果我可以用相同的radiobutton为每个问题循环放射组动态,我可以得到radiogroup id并插入到数组中。如果你有其他的消化我应该如何创造这样的东西,请告诉。谢谢你的帮助

3 个答案:

答案 0 :(得分:0)

试试这个: -

RadioGroup rg = (RadioGroup) findViewById(radiogroupid);
String rg_selected_data = "";
int radioButtonId= rg.getCheckedRadioButtonId();
    switch (radioButtonId) {

        case YouRadioButtonIdOne:
            rg_selected_data = "1";
            break;

        case YouRadioButtonIdtTwo:
            rg_selected_data = "2";
            break;

        case YouRadioButtonIdtThree:
            rg_selected_data = "3";
            break;

        case YouRadioButtonIdtFour:
            rg_selected_data = "4";
            break;
    }

现在你可以找到选择了哪个单选按钮。

如果您遇到任何问题我会帮助您,请尝试使用此代码。 :)

答案 1 :(得分:0)

每次检查单选按钮时,此解决方案都将运行代码。它进入你的onCreate()。来自here

RadioGroup radioGroup = (RadioGroup) findViewById(R.id.yourRadioGroup);
int questionCounter = 0;
int numberCorrect = 0;
//Question 1 is A, Q2 is C, Q3 is D, Q4 is B, Q5 is A again
final char[] correctAnswersList = {'a', 'c', 'd', 'b', 'a'};
radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() 
{
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        // checkedId is the RadioButton selected
        switch (checkedId) {
        case (R.id.radio_button_a):
            if (questionCounter==0 || questionCounter==4){
                numberCorrect++;
            }
            break;
        }
        case (R.id.radio_button_b):
            if (questionCounter==3){
                numberCorrect++;
            }
            break;
        }
        case (R.id.radio_button_c):
            if (questionCounter==1){
                numberCorrect++;
            }
            break;
        }
        case (R.id.radio_button_d):
            if (questionCounter==2){
                numberCorrect++;
            }
            break;
        }
    }
});

我的代码存在问题,这是故意的,因为它是美国的决赛季,学生们最后一分钟来到这里作弊。如果你看,你会发现它。你不会在这类问题中使用循环,我不确定为什么这是一个要求。

答案 2 :(得分:0)

对于所有想要创建一些像我这样的问题的人来说这段代码会帮助你,这段代码将循环播放RadioGroup并从allradiogroup中获取值使用List。并感谢所有帮助的人

        private List<RadioGroup> allradioGroup = new ArrayList<RadioGroup>();
        private RadioGroup radioGroup;

        private List<RadioButton> allRadio = new ArrayList<RadioButton>();
        private RadioButton radioButton;


      // place inside oncreate or whatever you want 

                                                         //your linear layout ID
        LinearLayout linear = (LinearLayout) findViewById(R.id.lintes);
        LinearLayout.LayoutParams layoutParams = new 
LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);


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

                        /* Defining RadioGroup */
                        radioGroup = new RadioGroup(this);
                        radioGroup.setOrientation(RadioGroup.HORIZONTAL);

                        allradioGroup.add(radioGroup);


                        /* Displaying Radio Buttons */
                        for (int j = 0; j < 4; j++) {
                            radioButton = new RadioButton(this);
                         //you can set your button ID here
                            radioButton.setId(j);

                            allRadio.add(radioButton);
                          //set text for each ID
                            if (allRadio.get(j).getId() == 0) {
                                radioButton.setText("0");
                            } else if (allRadio.get(j).getId() == 1) {
                                radioButton.setText("1");
                            } else if (allRadio.get(j).getId() == 2) {
                                radioButton.setText("2");
                            } else if (allRadio.get(j).getId() == 3) {
                                radioButton.setText("3");
                            }
                                //number 4 is total radiobutton

                                allradioGroup.get(i).addView(allRadio.get(i*4+j),j,layoutParams);
                        }

                        // set text
                        TextView soal = new TextView(this);
                        soal.setText("\n"+i+".loop your question here");
                        linear.addView(soal);

                        linear.addView(allradioGroup.get(i));

                    }

并且此代码将从列表中获取值,只需循环(i),您将获得所有值

int id[i] = allradioGroup.get(i).getCheckedRadioButtonId();