外部类对象未从 Kotlin 中的内部类更新

Outer class object not updating from inner class in Kotlin

提问人:MXC 提问时间:3/29/2019 最后编辑:MXC 更新时间:3/29/2019 访问量:118

问:

我正在使用带有图像按钮的 recyclerview。在适配器方法中。我捕获用户是否选择了图像按钮。在外部类中,我保留一个引用,无论用户是否选择了某些内容。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 属性未初始化。

Kotlin Android-RecyclerView

评论

0赞 Rahul Khurana 3/29/2019
尝试在 onBindViewHolder 中打印值并调用适配器 notifyDataSetChanged()
0赞 MXC 3/29/2019
@RahulKhurana 那没有用。类外的值仍未更新。还有其他解决方案吗?
0赞 Rahul Khurana 4/1/2019
它正在为 M 工作。我所做的是,我从内部类更改了值并调用了notifyDataSetChanged(),然后使用Logcat打印了值。然后更改值。发布您的完整代码以打破对您的情况不起作用的观点

答: 暂无答案