Быстро справился с этим, однако, как я уже сказал в своем комментарии, в дизайне есть более эффективные способы делать то, что вы делаете, без циклов, используя компоненты Android.
У вас есть список вопросов,и, как и ожидалось, количество вопросов увеличивается от 1 до 10 (в вашем случае), поэтому давайте увеличивать номер вопроса после каждого вызова checkAnswer
, а затем обновим представление:
private void setQuestions(int questionNum) {
questionTv.setText(questions[questionNum]);
questionImage.setImageResource(images[questionNum]);
choice1.setText(choices[questionNum][0]);
choice2.setText(choices[questionNum][1]);
choice3.setText(choices[questionNum][2]);
choice4.setText(choices[questionNum][3]);
choice1.setEnabled(true);
choice2.setEnabled(true);
choice3.setEnabled(true);
choice4.setEnabled(true);
choicesRg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener(){
@Override
public void onCheckedChanged(RadioGroup group,int checkedId){
switch(checkedId){
case R.id.choice1:{
checkAnswer(answers,choice1,choice2,choice3,choice4,scoreTv, questionNum); //a method to check the answer and do necessary modification.
break;
}
case R.id.choice2:{
checkAnswer(answers,choice2,choice1,choice3,choice4,scoreTv, questionNum);
break;
}
case R.id.choice3:{
checkAnswer(answers,choice3,choice2,choice1,choice4,scoreTv, questionNum);
break;
}
case R.id.choice4:{
checkAnswer(answers,choice4,choice2,choice3,choice1,scoreTv, questionNum);
break;
}
}
}
});
}
private void checkAnswer(List<String> answers,
boolean choice1,
boolean choice2,
boolean choice3,
boolean choice4,
TextView scoreTv,
int questionNum) {
// Do stuff
setQuestions(questionNum++);
}