1

我找到了一个关于如何实现的教程,onClickListenerRecyclerView后来我找不到代码不起作用的原因。日志说 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()
            }
        })
4

1 回答 1

3

这是因为您将侦听器设置在不同的实例上。你应该这样做:

recyclerView = ....apply {
    ...
    adapter = ListAdapter(list).apply {
        setOnItemClickListener(...)
    }
}

另一种可能性是创建一个 local val listAdapter,实例化它并设置监听器,最后,在applyRV 的块中,设置adapter = listAdapter

于 2019-06-17T06:33:59.317 回答