Android Toast消息在回收器视图中不起作用

Android Toast消息在回收器视图中不起作用,android,android-recyclerview,android-toast,Android,Android Recyclerview,Android Toast,此方法正在绑定列表上的数据: override fun onBindViewHolder(holder: CustomAdapter.ViewHolder, position: Int) { holder.bindItems(userList[position]) holder.imgDelete.setOnClickListener(View.OnClickListener { Toast.makeText(this,"Delete Button Clicked

此方法正在绑定列表上的数据:

override fun onBindViewHolder(holder: CustomAdapter.ViewHolder, position: Int) {
    holder.bindItems(userList[position])
    holder.imgDelete.setOnClickListener(View.OnClickListener {
        Toast.makeText(this,"Delete Button Clicked", Toast.LENGTH_SHORT).show()

    })
    holder.imgCopy.setOnClickListener(View.OnClickListener {
        Toast.makeText(this,"Copy Button Clicked", Toast.LENGTH_SHORT).show()
    })
}
获取以下内容时出错:

以下函数都不能用参数调用 提供:public open fun makeText(p0:Context!、p1:CharSequence!, p2:Int):干杯!在android.widget.Toast中定义

请检查并帮助使用

Toast.makeText(<Your Activity Context>,"Copy Button Clicked", Toast.LENGTH_SHORT).show()
你如何获得上下文

Context context;
一,-

二,-

三,-

4-

五,-

在构造函数中传递活动上下文以供CustomAdapter使用

Toast.makeText(<Your Activity Context>,"Copy Button Clicked", Toast.LENGTH_SHORT).show()
你如何获得上下文

Context context;
一,-

二,-

三,-

4-

五,-


在CustomAdapter的构造函数中传递活动上下文

我认为,这里使用的应用程序上下文应该是活动类上下文,而不是
,因为在onClickListener中,
实际上不是活动的应用程序上下文,而是父视图的应用程序上下文

试试这个:

Toast.makeText(<Here_comes_your_activity_context>,"Copy Button Clicked", Toast.LENGTH_SHORT).show()
Toast.makeText(,“单击复制按钮”,Toast.LENGTH\u SHORT).show()

别忘了在这里用你自己的活动上下文替换你的活动上下文

我认为,这里使用的应用程序上下文应该是活动类上下文,而不是
this
,因为onClickListener中的
this
实际上不是活动的应用程序上下文,而是父视图的应用程序上下文

试试这个:

Toast.makeText(<Here_comes_your_activity_context>,"Copy Button Clicked", Toast.LENGTH_SHORT).show()
Toast.makeText(,“单击复制按钮”,Toast.LENGTH\u SHORT).show()

别忘了在这里用你自己的活动上下文替换你的活动上下文

仅通过传递此消息,您就没有点击侦听器中的上下文。而是从视图中获取上下文

替换为
holder.imgDelete.context

 holder.imgDelete.setOnClickListener(View.OnClickListener {
        Toast.makeText(holder.imgDelete.context,"Delete Button Clicked", Toast.LENGTH_SHORT).show()
  })

仅通过传递此消息,您就没有点击侦听器中的上下文。而是从视图中获取上下文

替换为
holder.imgDelete.context

 holder.imgDelete.setOnClickListener(View.OnClickListener {
        Toast.makeText(holder.imgDelete.context,"Delete Button Clicked", Toast.LENGTH_SHORT).show()
  })

我会建议一种完全不同的方法(顺便说一句,我知道你在Kotlin工作,我会用java分享我的代码,我相信你会理解,但它也会帮助java程序员)

尝试将上下文另存为活动中的变量(在创建时将该变量设置为活动的“this”)。 将该变量设为静态变量。 像这样:

public class MainActivity extands Activity{

    private static Context context;

    @Override
    protected void onCreate (Bundle savedInstanceState){
       //your code...
       context = this;
    }

    public static Context getContext(){
       return context;
    }
}
然后在烤面包片里面,只需这样做:

override fun onBindViewHolder(holder: CustomAdapter.ViewHolder, position: Int) {
    holder.bindItems(userList[position])
    holder.imgDelete.setOnClickListener(View.OnClickListener {
        Toast.makeText(MainActivity.getContext(),"Delete Button Clicked", Toast.LENGTH_SHORT).show()

    })
    holder.imgCopy.setOnClickListener(View.OnClickListener {
        Toast.makeText(MainActivity.getContext(),"Copy Button Clicked", Toast.LENGTH_SHORT).show()
    })
}

我会建议一种完全不同的方法(顺便说一句,我知道你在Kotlin工作,我会用java分享我的代码,我相信你会理解,但它也会帮助java程序员)

尝试将上下文另存为活动中的变量(在创建时将该变量设置为活动的“this”)。 将该变量设为静态变量。 像这样:

public class MainActivity extands Activity{

    private static Context context;

    @Override
    protected void onCreate (Bundle savedInstanceState){
       //your code...
       context = this;
    }

    public static Context getContext(){
       return context;
    }
}
然后在烤面包片里面,只需这样做:

override fun onBindViewHolder(holder: CustomAdapter.ViewHolder, position: Int) {
    holder.bindItems(userList[position])
    holder.imgDelete.setOnClickListener(View.OnClickListener {
        Toast.makeText(MainActivity.getContext(),"Delete Button Clicked", Toast.LENGTH_SHORT).show()

    })
    holder.imgCopy.setOnClickListener(View.OnClickListener {
        Toast.makeText(MainActivity.getContext(),"Copy Button Clicked", Toast.LENGTH_SHORT).show()
    })
}

已尝试:Toast.makeText(CustomAdapter,“单击删除按钮”,Toast.LENGTH\u SHORT).show()//但不工作使用活动上下文非适配器。请让我知道如何在适配器类中添加活动。因为我的函数onBindViewHolder在CustomAdapter类中。请尝试此=>holder.itemView.getContext()@Rahul你能不能把答案标记为已接受的答案,这样就没有人会感到困惑..就像我一样.试过:Toast.makeText(CustomAdapter,“单击删除按钮”,Toast.LENGTH\u SHORT).show()//但不工作使用活动上下文非适配器。请让我知道如何在适配器类中添加活动。因为我的函数onBindViewHolder在customAdapter类中。请尝试此=>holder.itemView.getContext()@Rahul您能不能将答案标记为已接受的答案,这样就没有人会感到困惑..就像我一样。尝试过:Toast.makeText(CustomAdapter,“单击删除按钮”,Toast.LENGTH\u SHORT).show()//但不工作尝试:Toast.makeText(CustomAdapter,“单击删除按钮”,Toast.LENGTH\u SHORT).show()//但不工作