【发布时间】:2015-11-10 19:59:15
【问题描述】:
我以编程方式创建了 5 个单选组,每个组有 4 个单选按钮。每个单选按钮都代表一个问题的答案。所以我想这样做。当有人检查广播组的正确答案时,我想将它们全部添加到名为 correctAnswerRadios 的 ArrayList 中。与错误的答案相同。我还在按钮上设置了OnClickListener。当有人按下按钮时,我还希望将所有正确答案设为绿色,将错误答案设为红色。使用此代码,我收到此错误:'java.lang.NullPointerException: Attempt to write to null array'。
这是我的代码:
RadioGroup[] answerGroup;
RadioButton[] answer;
Button finishButton;
RadioButton[] checkedRadioButton;
ArrayList<RadioButton> correctAnswerRadios;
ArrayList<RadioButton> wrongAnswersRadios;
correctAnswerRadios = new ArrayList<>();
wrongAnswersRadios = new ArrayList<>();
answerGroup = new RadioGroup[5];
answer = new RadioButton[4];
int i = 0;
for (Question qn : questions) {
answerGroup[i] = new RadioGroup(this);
int j = 0;
for (Answer an : answers) {
if (qn.getID() == an.getQuestion_id_answer()) {
answer[j] = new RadioButton(this);
answer[j].setText(an.getAnswer());
answer[j].setId(j + 100);
answer[j].setTag(String.valueOf(an.getCorrect_answer()));
answerGroup[i].addView(answer[j]);
answer[j].setOnClickListener(new View.OnClickListener() {
private boolean isChecked = true;
@Override
public void onClick(View v) {
for (int j = 0; j < answer.length; j++) {
checkedRadioButton[j] = ((RadioButton) v);
int CorrectAnswer = Integer.parseInt(checkedRadioButton[j].getTag().toString());
if (checkedRadioButton[j].isChecked() & CorrectAnswer == 1) {
correctAnswerRadios.add(checkedRadioButton[j]);
} else {
wrongAnswersRadios.add(checkedRadioButton[j]);
}
}
}
});
j++;
}
}
linearLayout.addView(answerGroup[i]);
i++;
}
finishButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for (int i = 0; i < answerGroup.length; i++) {
for (int j = 0; j < answer.length; j++) {
RadioButton correctRadio = correctAnswerRadios.get(j);
correctRadio.setTextColor(Color.GREEN);
RadioButton wrongRadio = wrongAnswersRadios.get(j);
wrongRadio.setTextColor(Color.RED);
answerGroup[i].getChildAt(j).setEnabled(false);
}
}
}
});
任何帮助将不胜感激。谢谢!
【问题讨论】:
-
你想如果用户点击正确的答案,这个答案变成绿色,其余的红色,如果用户点击错误的答案,它变成红色,其余的2红1绿?
-
不,我想要的是当有人按下按钮时,正确的检查答案变成绿色,错误的答案变成红色。就是这样!
标签: java android loops arraylist onclicklistener