Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android从适配器调用方法_Java_Android_Fragment_Adapter - Fatal编程技术网

Java Android从适配器调用方法

Java Android从适配器调用方法,java,android,fragment,adapter,Java,Android,Fragment,Adapter,我想在用户单击recyclerview项时调用片段中的一个方法。比如说 holder.addButton.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图v){ //在片段中调用该方法 //e、 g.活动实例上下文点(.)方法名称 mainActivity.refreshData(); } } 在主要活动中,它将很简单 public void refreshData(){ // refresh } 创建

我想在用户单击recyclerview项时调用片段中的一个方法。比如说

holder.addButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//在片段中调用该方法
//e、 g.活动实例上下文点(.)方法名称
mainActivity.refreshData();
}
}
在主要活动中,它将很简单

public void refreshData(){
     // refresh
}


创建单击侦听器的界面:

interface ItemClickListener {
    void onItemClick();
}
将此侦听器添加到
RecyclerView
适配器的构造函数:

private final ItemClickListener itemClickListener;

public MyAdapter(ItemClickListener itemClickListener) {
    this.itemClickListener = itemClickListener;
}
然后在那里为您的
addButton
添加单击侦听器:

holder.addButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        itemClickListener.onItemClick();
    }
}
ItemClickListener
接口的实现传递给活动类中的适配器,例如:

MyAdapter adapter = new MyAdapter(() -> refreshData());

创建单击侦听器的界面:

interface ItemClickListener {
    void onItemClick();
}
将此侦听器添加到
RecyclerView
适配器的构造函数:

private final ItemClickListener itemClickListener;

public MyAdapter(ItemClickListener itemClickListener) {
    this.itemClickListener = itemClickListener;
}
然后在那里为您的
addButton
添加单击侦听器:

holder.addButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        itemClickListener.onItemClick();
    }
}
ItemClickListener
接口的实现传递给活动类中的适配器,例如:

MyAdapter adapter = new MyAdapter(() -> refreshData());

函数位于您的
主类中

    public void refreshData(){
     // refresh
}
现在可以通过此调用适配器中的函数

holder.addButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //call the method in fragment
                //e.g.  activity instance context dot(.) method name
             ((MainActivity) Objects.requireNonNull(context)).refreshData();
            }
   }
注意:您需要将片段
上下文
传递给适配器。 下面是我如何将上下文从
main class
传递到fragment然后fragment传递到
适配器的exmaple代码

Context context;
   public ProfileFragment(Context context) {
        this.context = context;
    }
  adapter = new ProfileTimelineAdapter(context, modelFeedArrayList);

函数位于您的
主类中

    public void refreshData(){
     // refresh
}
现在可以通过此调用适配器中的函数

holder.addButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //call the method in fragment
                //e.g.  activity instance context dot(.) method name
             ((MainActivity) Objects.requireNonNull(context)).refreshData();
            }
   }
注意:您需要将片段
上下文
传递给适配器。 下面是我如何将上下文从
main class
传递到fragment然后fragment传递到
适配器的exmaple代码

Context context;
   public ProfileFragment(Context context) {
        this.context = context;
    }
  adapter = new ProfileTimelineAdapter(context, modelFeedArrayList);