当我使用要传递餐厅 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 的意图将数据从回收器适配器传递到活动时,我的应用程序崩溃了的主要内容,如果未能解决你的问题,请参考以下文章

使用firebase将数据回收器适配器传递给其他活动

例外:从意图存储ArrayList时“无法转换为java.util.ArrayList”

如何使用回收适配器的意图在 Web 浏览器中打开 URL

将值从回收器适配器传递到android中的片段

从适配器到意图

当意图传递给其他活动时,为啥从 parcelable 中得到错误的值?