Android Kotlin 对回收者视图中的点击事件的新意图

Android Kotlin New intent on click event from recycler view

我刚刚开始学习 android 使用 Kotlin 进行开发。

我有一个列出项目的回收站视图。

我正在尝试为项目创建 onClick 事件,然后启动一个新的 intent 并传递项目 ID。

我在尝试实例化 Intent "None of the following functions can be called with the arguments supplied" 时遇到错误。我认为这是因为我无法访问视图的上下文?

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    holder.id = events[position][0]
    holder.title.text = events[position][1]

    if (events[position][2] == events[position][3]) {
        holder.date.text = events[position][2]
    } else {
        holder.date.text = events[position][2] + " - " + events[position][3]
    }

    holder.itemView.setOnClickListener {
        v: View -> Unit


        Log.d(TAG, "onItemClick for ID: " + holder.id)

        val intent = Intent(this, EventDetail::class.java)
        intent.putExtra("id", holder.id)
        startActivity(intent)
    }
}

你需要一个 context 的意图,这样你就可以从与这个 adapter 相关联的 activityfragment 中得到它,并将它传递给你的意图或你可以像这样从膨胀布局的任何视图中获取它

val context=holder.title.context
val intent = Intent( context, EventDetail::class.java)
context.startActivity(intent)

或者你可以让你的 activityfragment 实现它的监听器,你可以在它的回调上创建你的意图,就像这样

val intent= Intent( this@YourCalssname,EventDetail::class.java)

这在 Kotlin 中属于 OnBindviewholder '

holder.itemView.setOnClickListener { v ->
            val intent = Intent(v.context, QuestionsActi::class.java)
            v.context.startActivity(intent)

}

'

您可以使用 holder.itemView.context.startActivity(意图)here is my error

我是这样解决的

Solution