在另一个类中获取recyclerview监听器

时间:2016-01-11 10:34:12

标签: android adapter android-recyclerview onclicklistener

我的主要活动显示public string callReceipt(string terminal, ref string msg) { try { string sql = "Select MAX(ReceiptNo) from ReceiptStore where terminalno ='" + terminal + "'"; Logging.Log.writeLog(sql); msg = "Success"; int receiptno = Convert.ToInt32(Data.DAL.ExecuteScalar(sql)); if (!(sql is DBNull)) { return Convert.ToString(receiptno + 1); } else { int receipt = 100000; return receipt.ToString(); } } catch (Exception e) { msg = "Error : " + e.Message.ToString(); Logging.Log.writeLog(msg); return msg; } finally { } } ,低于ImageView。在RecyclerView我在视图持有者上实现RecyclerView的适配器中,它工作正常。

但是,当单击按钮时,我需要单击以在主活动中设置图像但我无法在主活动中实现列表器,以便将适配器的结果发送到主活动。我尝试使用onClickListner如下所示,但这会产生空指针异常

onClick

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

我几乎所有的recyclerviews都使用了一个界面。以下是:

1.我创建了一个接口类:

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

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

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)。在你的情况下像这样

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

4.最后,当我创建适配器时,我传递了一个匿名的IRecyclerViewCallback对象。在你的情况下像这样:

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

答案 1 :(得分:0)

您可以使用EventBus,也可以使用界面执行此操作