Recyclerview перерабатывает свои элементы.В вашем случае повторное рассмотрение повторного использования первого вопроса в восьмом вопросе.Это может быть любой вопрос.Мы должны обновить каждый элемент с его обновленным содержимым в onBindViewHolder.Что вы можете сделать, это сохранить массив для ответов.Когда пользователь нажимает на опцию, обновите массив ответов и вызовите notifyitemchanged для этой позиции.В onBindViewHolder выберите / отмените выбор параметров, проверив массив ответов.Вот фрагмент кода.
int[] answers = new int[getItemCount()];
@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {
/* check/uncheck options by checking the answer array */
if(answers[position] == 1) viewHolder.optiontxt1.setCompoundDrawablesWithIntrinsicBounds(R.drawable.check, 0, 0, 0);
else viewHolder.optiontxt1.setCompoundDrawablesWithIntrinsicBounds(R.drawable.uncheck, 0, 0, 0);
if(answers[position] == 2) viewHolder.optiontxt2.setCompoundDrawablesWithIntrinsicBounds(R.drawable.check, 0, 0, 0);
else viewHolder.optiontxt2.setCompoundDrawablesWithIntrinsicBounds(R.drawable.uncheck, 0, 0, 0);
if(answers[position] == 3) viewHolder.optiontxt3.setCompoundDrawablesWithIntrinsicBounds(R.drawable.check, 0, 0, 0);
else viewHolder.optiontxt3.setCompoundDrawablesWithIntrinsicBounds(R.drawable.uncheck, 0, 0, 0);
if(answers[position] == 4) viewHolder.optiontxt4.setCompoundDrawablesWithIntrinsicBounds(R.drawable.check, 0, 0, 0);
else viewHolder.optiontxt4.setCompoundDrawablesWithIntrinsicBounds(R.drawable.uncheck, 0, 0, 0);
viewHolder.optiontxt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
answers[position] = 1;
notifyItemChanged(position);
}
});