【问题标题】:How to call Context and Intent objects inside onBindViewHolder如何在 onBindViewHolder 中调用 Context 和 Intent 对象
【发布时间】:2019-09-06 22:44:30
【问题描述】:

我想在RecyclerView 中打开一个新的Activity,但我无法在其中创建Intent 对象。

val intent1 = Intent(this,Main2Activity::class.java)   
startActivity(intent1) 

Android Studio 会警告 Intent 不是 Context。我怎样才能在RecyclerView 中打开一个新的Activity

我也尝试了下面的代码,它给出“startActivity(intent)”行给出错误,“类型不匹配,需要上下文,找到 Intent”。

另外,“this@MainActivity”也会给出“unresolved reference@MainActivity”错误。

  override fun onBindViewHolder(holder: Main_Menu_Holder, position: Int) {
        var currentview = alldata.get(position)

    }

【问题讨论】:

  • 如果您在 OnClickListener 或其他类中执行此操作,则不能使用 this
  • 我该怎么做?我尝试了不同的方法,但仍然无法正常工作

标签: android android-intent kotlin android-context


【解决方案1】:

您正在呼叫this,这是您的RecyclerViewonBindViewHolder。您必须使用View 调用Context

  override fun onBindViewHolder(holder: Main_Menu_Holder, position: Int, v:View) {
        val intent = Intent(v.context, Main2activity::class.java)
        startActivity(intent) 
}

【讨论】:

  • 我更新了关于你的代码,但是“startActivity(intent)”行给出了错误,“类型不匹配,所需的上下文,找到了意图”。另外,“this@MainActivity”也会给出“unresolved reference@MainActivity”错误。不明白为什么。
  • @sleepy 你把这段代码放在你的 mainactivity 中了吗?这也在您的回收站视图中吗?请更新您上面的代码,因为当我没有您的代码时真的很难知道。您可以通过选择代码并按 Ctrl+K 来格式化代码
  • 不,我想在 Recyclerview 的“onBindViewHolder”函数中这样做。
  • @sleepy 为什么在onBindViewHolder 中?您可以在 mainactivity 中执行此操作。把它放在onBindViewHolder 是个坏主意。
  • 实际上我有 2 个列表(菜单),我正在使用 recyclerview。第一个菜单显示,让我们说汽车品牌。当我点击一个汽车品牌(itemview)时,它应该显示另一个全屏布局,汽车模型,但不在回收站视图中。所以这就是我试图在 Recyclerview 中膨胀的原因。也许这不是正确的方法。
猜你喜欢
  • 2020-04-30
  • 2017-01-17
  • 2021-08-07
  • 2018-10-17
  • 2012-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多