RecyclerView lateinit 属性 mClickListener 尚未初始化
RecyclerView lateinit property mClickListener has not been initialized
我找到了有关如何将 onClickListener
实现为 RecyclerView
的教程,但后来我找不到代码为何不起作用的原因。日志显示 lateinit 属性 尚未初始化。我不确定为什么这么说。我将如何解决这个问题?
这是 MainActivity 中的部分代码:
viewManager = LinearLayoutManager(this)
val list = ArrayList<test>()
recyclerView = findViewById<RecyclerView>(R.id.recyclerview).apply {
setHasFixedSize(true)
layoutManager = viewManager
adapter = ListAdapter(list)
}
ListAdapter(list).setOnItemClickListener(object : ListAdapter.ClickListener {
override fun onClick(pos: Int, aView: View) {
Toast.makeText(applicationContext,"It works :)",Toast.LENGTH_SHORT).show()
}
})
这是因为您在不同的实例上设置监听器。你应该这样做:
recyclerView = ....apply {
...
adapter = ListAdapter(list).apply {
setOnItemClickListener(...)
}
}
另一种可能性是创建本地 val listAdapter
,实例化它并设置侦听器,最后,在 RV 的 apply
块中,设置 adapter = listAdapter
我找到了有关如何将 onClickListener
实现为 RecyclerView
的教程,但后来我找不到代码为何不起作用的原因。日志显示 lateinit 属性 尚未初始化。我不确定为什么这么说。我将如何解决这个问题?
这是 MainActivity 中的部分代码:
viewManager = LinearLayoutManager(this)
val list = ArrayList<test>()
recyclerView = findViewById<RecyclerView>(R.id.recyclerview).apply {
setHasFixedSize(true)
layoutManager = viewManager
adapter = ListAdapter(list)
}
ListAdapter(list).setOnItemClickListener(object : ListAdapter.ClickListener {
override fun onClick(pos: Int, aView: View) {
Toast.makeText(applicationContext,"It works :)",Toast.LENGTH_SHORT).show()
}
})
这是因为您在不同的实例上设置监听器。你应该这样做:
recyclerView = ....apply {
...
adapter = ListAdapter(list).apply {
setOnItemClickListener(...)
}
}
另一种可能性是创建本地 val listAdapter
,实例化它并设置侦听器,最后,在 RV 的 apply
块中,设置 adapter = listAdapter