当我使用要传递餐厅 ID 的意图将数据从回收器适配器传递到活动时,我的应用程序崩溃了

Posted

技术标签:

【中文标题】当我使用要传递餐厅 ID 的意图将数据从回收器适配器传递到活动时,我的应用程序崩溃了【英文标题】:my app is crashing when i am passing data from recycler adapter to activity using intents i want to pass restaurant id 【发布时间】:2021-12-28 18:47:44 【问题描述】:

holder.llContent.setOnClickListener println(holder.txtRestaurantName.tag.toString())

        val intent=Intent(context,RestaurantMenuActivity::class.java)
        intent.putExtra("restaurantId",holder.txtRestaurantName.tag.toString())
        intent.putExtra("restaurantName",holder.txtRestaurantName.text.toString())
        context.startActivity(intent)
    

【问题讨论】:

这里的代码并不多,但我建议您使用 Activity 接口而不是 startActivity() 你能发布堆栈跟踪吗? 【参考方案1】:

您可以在您的适配器中定义一个点击监听器函数,它可以从您的活动中调用。

首先将它添加到您的适配器类中:

private var onItemClickListener: ((YourDataModel) -> Unit)? = null

fun setOnItemClickListener(listener: ((YourDataModel) -> Unit)) 
    onItemClickListener = listener

然后在您的适配器中,对于您要设置点击侦听器的view,添加以下行:

view.setOnClickListener 
    onItemClickListener?.let  it(dataModel) 

注意:dataModel 被认为是一个请求响应 Kotlin 对象,您可以传递任何其他参数(另一个普通函数:)),如餐厅 ID 或任何东西。

现在你可以像这样在你的活动中使用它:

adapter.setOnItemClickListener 
    // What you want to do

【讨论】:

以上是关于当我使用要传递餐厅 ID 的意图将数据从回收器适配器传递到活动时,我的应用程序崩溃了的主要内容,如果未能解决你的问题,请参考以下文章