Объект внешнего класса не обновляется из внутреннего класса в Котлине - PullRequest
1 голос
/ 29 марта 2019

Я использую программу повторного просмотра, в которой есть кнопка с изображением. В методе адаптера 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 не инициализировано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...