当我的变量idAnswerP等于Answers.get(i)时,我正试图从单选按钮获取所选值。当我在应用程序上调试时,显示我在idRespuestaC中收到的数字,但未显示在单选按钮中。帮助吗?
public void addRB(ArrayList<Model> answers) {
RadioGroup ll = new RadioGroup(this);
ll.setOrientation(LinearLayout.VERTICAL);
for (int i = 0; i < answers.size(); i++) {
Model model = answers.get(i);
RadioButton radiob = new RadioButton(this);
if (idAnswerP == model.getId()) {
radiob.setId(model.getId());
radiob.setText(model.getQuestion());
radiob.setTag(model.getAnswer());
radiob.setChecked(true);
radiob.setSelected(true);
} else {
radiob.setId(model.getId());
radiob.setText(model.getQuestion());
radiob.setTag(model.getAnswer());
radiob.setChecked(false);
}
lisRadio.add(radiob);
ll.addView(radiob);
}
((ViewGroup) findViewById(R.id.radioGroup)).addView(ll);
}
答案 0 :(得分:0)
已经检查了您创建此Activity的代码,并且发现如果我使用setId(model.getId),则从不检查第一个单选按钮,则一切正常。
所以我在想,也许您有一个重复的ID,并且在单选按钮中设置ID时效果不佳。
我让您一直在测试的代码。
代码:
public class MainActivity extends AppCompatActivity {
private final int idAnswerP = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayList<Model> answer = new ArrayList<>();
answer.add(new Model(1));
answer.add(new Model(1));
answer.add(new Model(1));
answer.add(new Model(1));
answer.add(new Model(2));
answer.add(new Model(2));
addRB(answer);
}
public void addRB(ArrayList<Model> answers) {
RadioGroup ll = new RadioGroup(this);
ll.setOrientation(LinearLayout.VERTICAL);
RadioButton radiob;
for (Model model: answers) {
radiob = new RadioButton(this);
if (idAnswerP == model.getId()) {
radiob.setId(model.getId()); //Comment this line and everything works without problem
radiob.setText(model.getQuestion());
radiob.setTag(model.getAnswer());
radiob.setChecked(true);
} else {
radiob.setId(model.getId());
radiob.setText(model.getQuestion());
radiob.setTag(model.getAnswer());
radiob.setChecked(false);
}
ll.addView(radiob);
}
((ViewGroup) findViewById(R.id.radioGroup)).addView(ll);
}
}
希望对您有帮助。
答案 1 :(得分:0)
如果idAnswerP的类型为String,那么毫无疑问,这是行不通的。
如果是这样,只需将if大小写更改为以下内容:
if (idAnswerP.equals(model.getId())) {
radiob.setId(model.getId());
radiob.setText(model.getQuestion())
....