У меня есть приложение для викторины исходный код с несколькими радиогруппами в представлении реселлера, и я хочу, чтобы каждый раз, когда выбиралась правильная кнопка радио в определенной позиции (радиогруппа), она должна обновлять оценку 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, но я не знать, где его разместить и что содержать, поскольку для пользователя необязательно выбирать из каждой радиогруппы (если только для простейшего сценария это не требуется).
Как обновить счет для каждой радиокнопки радиогруппа / позиция выбранного?