我正在使用带有图像按钮的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属性。