我正在尝试使用Listview开发测验应用程序,该应用程序的想法是每个问题都有问题列表
4个单选按钮选择答案,完成所有问题后,用户单击提交按钮
提交按钮可将用户及其总得分移至“得分”布局
我的问题是:我无法实现分数计数的逻辑,我添加了一个if条件,该条件每次都有效
更改为RadioButtons,它检查答案是否正确,将分数加+1
如果用户选择正确的答案,然后将其更改为错误的答案,则会发生问题
分数保持不变,如果我加计数器-答案错误时分数将变为负数,因为存在多个错误答案
final RadioGroup rd = (RadioGroup) convertView.findViewById(R.id.RadioGroup);
rd.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
if (getItem(position).getAnswer() == rd.getCheckedRadioButtonId()) {
counter++;
}
}
});
完整项目:https://github.com/engmedo800/QuizzChan6
最佳答案
我认为您应该使用布尔数组,以确保每个问题的响应正确性,如下所示:
数组字段声明:
private boolean[] isCorrectAnswer;
Adapter构造函数中的数组字段初始化(在您的项目中称为QuestionAdaptor):
public QuestionAdaptor(Context context, ArrayList<Question> questionArray) {
super(context, 0, questionArray);
isCorrectAnswer = new boolean[questionArray.size()];
}
侦听器的代码:
final RadioGroup rd = (RadioGroup)
convertView.findViewById(R.id.RadioGroup);
rd.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
if (getItem(position).getAnswer() == rd.getCheckedRadioButtonId()) {
isCorrectAnswer[position] = true;
} else {
isCorrectAnswer[position] = false;
}
});
getCorrectAnswersCount()代码:
int getCorrectAnswersCount() {
int count = 0;
for (int i = 0; i < isCorrectAnswer.length; i++) {
if (isCorrectAnswer[i]) {
count++;
}
}
return count;
}
关于java - 无法为测验应用程序实现得分计数器的逻辑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49070907/