Как обновить счет для каждой радио-кнопки из RadioGroup / позиции выбранного? - PullRequest
0 голосов
/ 23 марта 2020

У меня есть приложение для викторины исходный код с несколькими радиогруппами в представлении реселлера, и я хочу, чтобы каждый раз, когда выбиралась правильная кнопка радио в определенной позиции (радиогруппа), она должна обновлять оценку correct++ и отправлять ее на действие, как показано ниже.

        @Override
        public void onClick(View view) {
            boolean checked = ((RadioButton) view).isChecked();

            if (checked) {
                int radioButtonID = mRadioGroup.getCheckedRadioButtonId();
                View radioButton = mRadioGroup.findViewById(radioButtonID);
                int selectedAnswerIndex = mRadioGroup.indexOfChild(radioButton);
                RadioButton r = (RadioButton) mRadioGroup.getChildAt(selectedAnswerIndex);
                String  selectedAnswer = r.getText().toString();

                int position = getAdapterPosition();
                Object object = mArrayList.get(position);
                String correctAnswer = ((Quiz) object).mCorrectAnswer;

                if (selectedAnswer.equals(correctAnswer)) {
                    correct++;
                    editor.putInt("score", correct);
                    editor.apply();
                }
            }
        }

Это работает, но только для одной радиогруппы, так как если я выбираю другую radioButton из другой позиции, счет correct всегда равен 1, вероятно, потому что он сброшен до значения по умолчанию до onClick функция выполняется снова.

Моим возможным решением было бы al oop i <= arrayList.size(), содержащее if (checked), чтобы предотвратить сброс балла correct по умолчанию = 0, но я не знать, где его разместить и что содержать, поскольку для пользователя необязательно выбирать из каждой радиогруппы (если только для простейшего сценария это не требуется).

Как обновить счет для каждой радиокнопки радиогруппа / позиция выбранного?

1 Ответ

0 голосов
/ 23 марта 2020

Добавление для l oop решено все

        @Override
        public void onClick(View view) {
            boolean checked = ((RadioButton) view).isChecked();

            int position = getAdapterPosition();
            for (int i = 0; i <= position; i++) {
                if (checked) {
                    int radioButtonID = mRadioGroup.getCheckedRadioButtonId();
                    View radioButton = mRadioGroup.findViewById(radioButtonID);
                    int selectedAnswerIndex = mRadioGroup.indexOfChild(radioButton);
                    RadioButton r = (RadioButton) mRadioGroup.getChildAt(selectedAnswerIndex);
                    String selectedAnswer = r.getText().toString();

                    Object object = mArrayList.get(position);
                    String correctAnswer = ((Quiz) object).mCorrectAnswer;

                    if (selectedAnswer.equals(correctAnswer)) {
                        correct++;
                        editor.putInt("score", correct);
                        editor.apply();
                    }
                }
            }
        }
...