我有一个疑问......在我的Android应用程序中,我有一个Activity,它的GUI是从我的SQLite数据库中的某些数据动态创建的...我没有遇到任何麻烦,并且工作正常...
在这个活动中,有一堆TextView和RadioGroup和RadioButton都是在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循环内部还是在外部?还是有另一种方式?
我非常迷失在这里!任何形式的帮助都会被贬低!谢谢!
答案 0 :(得分: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
....
}