我是新手编程,我想创建一些测验应用程序。 所有答案只需使用单选按钮用户必须选择: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并插入到数组中。如果你有其他的消化我应该如何创造这样的东西,请告诉。谢谢你的帮助
答案 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();