无法实现quizz App的Score Counter逻辑

时间:2018-03-02 14:13:21

标签: java android

我正在尝试使用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++;

            }
        }

    });

完整项目:https://github.com/engmedo800/QuizzChan6

2 个答案:

答案 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)

仅计算正确(真实)答案 - 在每个用户答案后重新计算所有答案。在这种情况下,你不会有任何问题。