Kotlin RecyclerView.ViewHolder中获取Context启动Activity失败问题
解决RecyclerView.ViewHolder中启动Activity的Context问题
你的代码存在两个关键问题:
- ViewHolder类本身没有
getContext()方法,无法直接调用该方法获取上下文 - 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
相关产品推荐
相关产品推荐

