Я использую программу повторного просмотра, в которой есть кнопка с изображением. В методе адаптера onBindViewHolder(..)
. Я фиксирую, выбрал ли пользователь кнопку изображения или нет. Во внешнем классе я сохраняю ссылку, выбрал ли пользователь что-то или нет.
Я могу зафиксировать выбор пользователя, но поле внешнего класса не обновляется. Я использую Kotlin вот пример.
class Quiz : ConstraintLayout {
constructor(context: Context?) : super(context)
// This is updated in the apdater.
private var selectedOption : String? = null
@SuppressLint("ClickableViewAccessibility")
private fun inflate(context: Context) {
LayoutInflater.from(context)
.inflate(R.layout.image_layout, this, true) as ConstraintLayout
viewAnimation.startTimerAnimation(7000) {
// This always remain null. This callback is triggered after 7000 ms i.e. when animation completes.
if (selectedOption == null)
// do something less
else // do something more
}
}
inner class ImageAdapter() : RecyclerView.Adapter<ViewHolder>() {
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
optionButton.setOnClickListener {
// I have put a log statement here and tested the selection is captured. I also see in on the screen.
selectedOption = imageButtonMap[holder.optionButton].toString()
}
}
}
Пожалуйста, дайте мне знать, если здесь требуется дополнительная информация.
В качестве теста я также сделал это свойство lateinit, и Kotlin выдает исключение, говоря, что свойство lateinit не инициализировано.