Android 从适配器调用方法
Android Call a method from adapter
我在片段中有一个方法,我想在用户单击 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();
}
}
在主要 activity 中会很简单
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
接口的实现传递给 activity class 中的适配器,例如:
MyAdapter adapter = new MyAdapter(() -> refreshData());
这个函数在你的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);
我在片段中有一个方法,我想在用户单击 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();
}
}
在主要 activity 中会很简单
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
接口的实现传递给 activity class 中的适配器,例如:
MyAdapter adapter = new MyAdapter(() -> refreshData());
这个函数在你的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);