I have a method in a fragment that I want to call when user clicks a recyclerview item. For example
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();
}
}
In main activity it will be simple as
public void refreshData(){
// refresh
}
Create an interface of a click listener:
interface ItemClickListener {
void onItemClick();
}
Add this listener to your RecyclerView
adapter's constructor:
private final ItemClickListener itemClickListener;
public MyAdapter(ItemClickListener itemClickListener) {
this.itemClickListener = itemClickListener;
}
And add there the click listener for your addButton
:
holder.addButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
itemClickListener.onItemClick();
}
}
Pass the implementation of ItemClickListener
interface to your adapter in your activity class, for example like this:
MyAdapter adapter = new MyAdapter(() -> refreshData());