Использование onClickListener
вместо setOnCheckedChangeListener
является решением. Но если вы сделаете view.performClick()
внутри bind()
в будущем, это произойдет снова.
Прослушиватели, которые вы установили для представлений, по-прежнему активны даже после того, как представление исчезает с экрана и возвращается в новую строку.
При прокрутке вверх изображение, которое исчезает с экрана, берется RecyclerView и прикрепляется к нижнему ряду, а затем передается вам, чтобы связать его с новыми данными. К этому представлению все еще подключены слушатели событий. Когда вы вызываете линию holder.radio_group.check()
, прослушиватель, который был подключен ранее, выполнится.
Сначала вы можете удалить прослушиватель, затем установить / снять флажок радиогруппы, а затем установить новый прослушиватель событий для радиогруппы. В вашем коде вот так:
holder.radio_group.setOnCheckedChangeListener(null) // <----- This line added.
if(question.rightAnswer != null) {
holder.radio_group.check(question.rightAnswer!!)
} else {
holder.radio_group.clearCheck()
}
holder.radio_group.setOnCheckedChangeListener(object : RadioGroup.OnCheckedChangeListener { ..... })