Пожалуйста, проверьте последнее обновление ниже, поскольку я нашел проблему, но не знаю, как ее исправить
[Обновление: ссылка для скачивания проекта] , котораяочень маленький, это всего лишь пример и добавлен класс вопросов
Я создаю ListView с ArrayAdapter для теста.каждый вопрос имеет 3 ответа в виде переключателей.Проблема в том, что когда я прокручиваю вниз или снова вверх, он заменяет ответы на первый вопрос ответами на другой вопрос, который был скрыт свитком, и заменяет ответы на скрытый вопрос ответами на первый вопрос.
Так скажемУ меня есть вопрос 1 с 3 ответами: 1, 2 и 3, и у меня есть вопрос 5, который является первым скрытым вопросом с тремя ответами 10,11 и 12. Когда я прокручиваю вниз, чтобы просмотреть вопрос 5, я обнаруживаю, что его ответы 1,2 и3 затем, когда я прокручиваю вверх, я обнаруживаю, что у этого вопроса есть ответы на вопрос 5: 10,11 и 12. Почему это происходит и как это исправить?Вот адаптер
public class QuestionsAdapter extends ArrayAdapter<Questions> {
public QuestionsAdapter(Activity context, ArrayList<Questions> questions) {
super(context, 0, questions);
}
@NonNull
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View listItemView = convertView;
if (listItemView == null) {
listItemView = LayoutInflater.from(getContext()).inflate(R.layout.list_item, parent, false);
}
//styling odd and even items
if (position % 2 == 1) {
listItemView.setBackgroundColor(getContext().getResources().getColor(R.color.odd));
} else {
listItemView.setBackgroundColor(getContext().getResources().getColor(R.color.even));
}
//used ViewHolder to prevent triggering position null issue
// final because it'll be used inside onClick
final ViewHolder viewHolder = new ViewHolder();
try {
final Questions currentQuestion = getItem(position);
viewHolder.questionTextView = (TextView) listItemView.findViewById(R.id.q_text);
viewHolder.questionTextView.setText(currentQuestion.getmQuestionTitle());
viewHolder.radioGroup = (RadioGroup) listItemView.findViewById(R.id.q_answers);
viewHolder.firstAnswer = (RadioButton) listItemView.findViewById(R.id.q_option1);
//MainActivity.answerIdis set to 0 and use it to set different id for each radio to find it inside onClick
viewHolder.firstAnswer.setText(currentQuestion.getQuestionAnswer1());
viewHolder.firstAnswer.setId(MainActivity.answerId);
//increading MainActivity.answerId by 1
MainActivity.answerId +=1;
viewHolder.secondAnswer = (RadioButton) listItemView.findViewById(R.id.q_option2);
viewHolder.secondAnswer.setText(currentQuestion.getQuestionAnswer2());
viewHolder.secondAnswer.setId(MainActivity.answerId);
MainActivity.answerId +=1;
viewHolder.thirdAnswer = (RadioButton) listItemView.findViewById(R.id.q_option3);
viewHolder.thirdAnswer.setText(currentQuestion.getQuestionAnswer3());
viewHolder.thirdAnswer.setId(MainActivity.answerId);
MainActivity.answerId +=1;
final TextView resultTextView = (TextView) listItemView.findViewById(R.id.result_text);
} catch (Exception e) {
e.printStackTrace();
}
return listItemView;
}
private class ViewHolder {
TextView questionTextView;
RadioGroup radioGroup;
RadioButton firstAnswer, secondAnswer,thirdAnswer;
}
}
Класс вопросов:
public class Questions {
private String mQuestionTitle,mQuestionAnswer1, mQuestionAnswer2, mQuestionAnswer3, mCorrect ;
public Questions(String questionTitle, String questionAnswer1, String questionAnswer2, String questionAnswer3,
String correct){
mQuestionTitle = questionTitle;
mQuestionAnswer1 = questionAnswer1;
mQuestionAnswer2 = questionAnswer2;
mQuestionAnswer3 = questionAnswer3;
mCorrect = correct;
}
public String getQuestionTitle(){
return mQuestionTitle;
}
public String getQuestionAnswer1(){
return mQuestionAnswer1;
}
public String getQuestionAnswer2(){
return mQuestionAnswer2;
}
public String getQuestionAnswer3(){
return mQuestionAnswer3;
}
public String getCorrect(){
return mCorrect;
}
}
[Обновление] пытается отладить и снова отобразить вопрос вместе с первой радиокнопкой. Я считаю, что заголовок вопроса отличается отвопрос, который я отображаю вместе с переключателем
String question = currentQuestion.getQuestionTitle();
String option_1 = currentQuestion.getQuestionAnswer1();
String option_2 = currentQuestion.getQuestionAnswer2();
String option_3 = currentQuestion.getQuestionAnswer3();
viewHolder.questionTextView = (TextView) listItemView.findViewById(R.id.q_text);
viewHolder.questionTextView.setText(question);
viewHolder.radioGroup = (RadioGroup) listItemView.findViewById(R.id.q_answers);
viewHolder.firstAnswer = (RadioButton) listItemView.findViewById(R.id.q_option1);
viewHolder.firstAnswer.setText(option_1 + ":" + question);
viewHolder.firstAnswer.setId(MainActivity.answerId);
MainActivity.answerId +=1;
![enter image description here](https://i.stack.imgur.com/P6PKJ.jpg)
Реальная проблема здесь , когда я устанавливаю idответить, он возвращается к 0 и начинает увеличивать его на 1, а при повторной прокрутке снова возвращается к 0.Как сохранить последнее целочисленное значение и увеличивать его, чтобы установить различные идентификаторы для радиокнопок?
Снимки экрана
![opening the app I find the correct answers for the first question](https://i.stack.imgur.com/s6gxd.jpg)
![After scrolling the the first hidden question I find that its answers has been replaced by the first question answers](https://i.stack.imgur.com/1SoGa.jpg)
![scrolling up again and I find that the first question answers has been replaced by question 5 answers](https://i.stack.imgur.com/sblD9.jpg)