Get recyclerview listener in another class

[亡魂溺海] 提交于 2019-12-06 05:25:56

I use an interface for almost all of my recyclerviews. Here's how:

1.I create an interface class:

public interface IRecyclerViewCallbacks {
    public void onClick(Object object);
}

2.When I create my adapter I add a parameter for an IRecyclerViewCallbacks object:

public class ExampleAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

    private ArrayList<Model> mData;
    private IRecyclerViewCallbacks mCallbacks;

    public ExampleAdapter (@NotNull ArrayList<Model> data, @NotNull IRecyclerViewCallbacks callbacks) {
        mData= data;
        mCallbacks = callbacks;
    }
}

3.In the onClick listener inside the adapter I call mCallbacks.onClick(object). In your case something like this

@Override
public void onClick(View v) {
    AddTitlesInformation current = mData.get(getAdapterPosition());
    mCallbacks.onClick(current.titleImageId);
}

4.Finally, when I create the adapter I pass it an anonymous IRecyclerViewCallback object. In your case something like this:

ExampleAdapter adapter = new ExampleAdapter(mData, new IRecyclerViewCallbacks() {
    @Override
    public void onClick(Object object) {
        int titleImageRes = (int) object;
        final  ImageView TitleImage = (ImageView) v.findViewById(R.id.TitleImageimageView);
         TitleImage.setImageResource(titleImageRes);
    }
});

You can use EventBus or you can use interface for doing this

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!