Java Android从适配器调用方法
我想在用户单击recyclerview项时调用片段中的一个方法。比如说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 } 创建
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);