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

10-12 04:50