我有一个ViewHolder,当用户按下viewHolder时,它必须显示Toast。(viewHolder类在MyAdapter类中) Toast.makeText方法的第一个参数是上下文。当我编写this @ MainActivity时,它得到了一个语法错误:不可靠的引用:@MainActivity。 但是当我在MainActivity中编写它时,效果很好。 请帮我修复它
答案 0 :(得分:1)
因为它不是MainActivity实例,所以this@MainActivity
仅在MainActivity.kt
文件中需要上下文时才起作用。
您应该使用val context = holder.itemView.context
,然后使用Toast.makeText(context, "Your message", Toast.LENGTH_SHORT).show()
答案 1 :(得分:0)
如果适配器类位于活动或片段中,则必须在类之前使用inner
关键字:
inner class MyAdapter {}
这样,如果适配器位于您的MainActivity内部,则this @ MainActivity将起作用。
如果它不在您的活动中,则必须从“活动”或片段中获取上下文作为参数,
class MyAdapter(val context: Context) {}
或
class MyAdapter(val activity: Activity) {}