我的主要活动显示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
感谢您的帮助
答案 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,也可以使用界面执行此操作