我正在尝试使用Listview开发一个quizz应用程序app的想法是每个问题都有问题列表 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++;
}
}
});
答案 0 :(得分:1)
我认为你应该有一些带有布尔值的数组,它可以保持每个问题的响应正确性,如下所示:
数组字段声明:
public QuestionAdaptor(Context context, ArrayList<Question> questionArray) {
super(context, 0, questionArray);
isCorrectAnswer = new boolean[questionArray.size()];
}
Adapter构造函数中的数组字段初始化(在项目中称为QuestionAdaptor):
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;
}
});
侦听器的代码:
int getCorrectAnswersCount() {
int count = 0;
for (int i = 0; i < isCorrectAnswer.length; i++) {
if (isCorrectAnswer[i]) {
count++;
}
}
return count;
}
getCorrectAnswersCount()代码:
{{1}}
答案 1 :(得分:0)
仅计算正确(真实)答案 - 在每个用户答案后重新计算所有答案。在这种情况下,你不会有任何问题。