android从适配器调用方法

ubof19bj  于 2021-07-09  发布在  Java
关注(0)|答案(2)|浏览(226)

我在片段中有一个方法,当用户单击recyclerview项时,我想调用该方法。例如

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.refreshData();
            }
   }

在主要活动中,这将是简单的

public void refreshData(){
     // refresh
}
wb1gzix0

wb1gzix01#

此函数在您的 main-class :

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();
            }
   }

注意:您需要传递片段 context 连接到适配器。下面是我如何传递上下文的exmaple代码 main-class 碎裂然后碎裂成碎片 adapter .

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

gzjq41n42#

创建单击侦听器的接口:

interface ItemClickListener {
    void onItemClick();
}

将此侦听器添加到 RecyclerView 适配器的构造函数:

private final ItemClickListener itemClickListener;

public MyAdapter(ItemClickListener itemClickListener) {
    this.itemClickListener = itemClickListener;
}

然后在那里为您的应用程序添加click侦听器 addButton :

holder.addButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        itemClickListener.onItemClick();
    }
}

通过实施 ItemClickListener 接口到活动类中的适配器,例如:

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

相关问题