在另一个类中获取recyclerview侦听器 [英] Get recyclerview listener in another class

查看:78
本文介绍了在另一个类中获取recyclerview侦听器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个主要活动,显示一个ImageView,在其下方显示一个RecyclerView.在RecyclerView的适配器中,我在视图支架上实现了onClickListner,并且工作正常.

I have a main activity that displays an ImageView and below that a RecyclerView. In the adapter for the RecyclerView I implemented onClickListner on the view holder and it is working fine.

但是,当单击按钮时,我需要单击以在主活动中设置图像,但是无论如何我都看不到要在主活动中实现列表器以将结果从适配器获取到主活动.我尝试如下使用onClick,但这给出了空指针异常.

However I need the click to set the image in the main activity when the button is clicked but I cannot see anyway to implement a listner in the main activity to get the results from the adapter to the main activity. I tried the using the onClick as below but that gives a null pointer exception.

class AddVideoTitleViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
    TextView TitleScreenTitle;
    ImageView TitleScreenImage;

    public AddVideoTitleViewHolder(View itemView) {
        super(itemView);

        TitleScreenTitle = (TextView) itemView.findViewById(R.id.AddVideoTitleSingleRowTextView);
        TitleScreenImage = (ImageView) itemView.findViewById(R.id.AddVideoTitleSingleRowImageView);
        TitleScreenImage.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {

        final  ImageView TitleImage = (ImageView) v.findViewById(R.id.TitleImageimageView);
        AddTitlesInformation current = data.get(getAdapterPosition());
        TitleImage.setImageResource(current.titleImageId);

    }

感谢您的帮助

推荐答案

我几乎所有的recyclerviews都使用一个接口.方法如下:

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

1.我创建一个接口类:

1.I create an interface class:

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

2.创建适配器时,我为IRecyclerViewCallbacks对象添加了一个参数:

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.在适配器内部的onClick侦听器中,我调用mCallbacks.onClick(object).在您的情况下,像这样

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.最后,当我创建适配器时,将其传递给匿名IRecyclerViewCallback对象.在您的情况下,如下所示:

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);
    }
});

这篇关于在另一个类中获取recyclerview侦听器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆