Android 从适配器调用方法
Posted
技术标签:
【中文标题】Android 从适配器调用方法【英文标题】:Android Call a method from adapter 【发布时间】:2021-07-16 10:15:42 【问题描述】:当用户单击 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
【问题讨论】:
【参考方案1】:创建点击监听的接口:
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());
【讨论】:
【参考方案2】:这个函数在你的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
传递给您的适配器。
这是我如何将上下文从 main-class
传递到 fragment 然后将 fragment 传递到 adapter
的示例代码。
Context context;
public ProfileFragment(Context context)
this.context = context;
adapter = new ProfileTimelineAdapter(context, modelFeedArrayList);
【讨论】:
以上是关于Android 从适配器调用方法的主要内容,如果未能解决你的问题,请参考以下文章