You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin RecyclerView.ViewHolder中获取Context启动Activity失败问题

解决RecyclerView.ViewHolder中启动Activity的Context问题

你的代码存在两个关键问题:

  1. ViewHolder类本身没有getContext()方法,无法直接调用该方法获取上下文
  2. ViewHolder也不具备startActivity()方法,这个方法属于Context类的成员方法

只需通过itemView获取当前上下文,再调用Context的startActivity()方法就能解决问题,修正后的完整代码如下:

class MyYugioHolder(view: View):RecyclerView.ViewHolder(view)  {
  private val binding = ItemYugioSavedBinding.bind(view)

  fun bind(yugio: YugioEntity){
    with(binding){
        tvIndex.text = formatNumberTo3Digits(yugio.idb.toInt())
        tvName.text = yugio.name
        Glide
            .with(itemView)
            .load(yugio.image)
            .into(binding.ivYugioLogoCard)

        gosee.setOnClickListener{
            // 修正后的启动逻辑
            val context = itemView.context
            context.startActivity(Intent(context, MainActivity::class.java))
        }
    }
}

如果需要给目标Activity传递数据,可以通过Intent的putExtra()方法添加参数,示例如下:

gosee.setOnClickListener{
    val context = itemView.context
    val intent = Intent(context, MainActivity::class.java).apply {
        putExtra("YUGIO_ENTITY_ID", yugio.idb)
    }
    context.startActivity(intent)
}

内容的提问来源于stack exchange,提问作者Andy Salim Rojas Hinojosa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 02:20:26