Android 单击时的Recyclerview空对象引用
我的适配器:Android 单击时的Recyclerview空对象引用,android,android-recyclerview,Android,Android Recyclerview,我的适配器: public class Adaptor extends RecyclerView.Adapter<Adaptor.Holder>{ private ArrayList<Winkel> winkels; private LayoutInflater inflater; private ImageView icon; private ItemCLickCallback itemCLickCallback; public interface ItemCLic
public class Adaptor extends RecyclerView.Adapter<Adaptor.Holder>{
private ArrayList<Winkel> winkels;
private LayoutInflater inflater;
private ImageView icon;
private ItemCLickCallback itemCLickCallback;
public interface ItemCLickCallback {
void onItemClick(int p);
void onSecItemClick(int p);
}
public void setItemCLickCallback(final ItemCLickCallback itemCLickCallback1){
this.itemCLickCallback = itemCLickCallback;
}
public Adaptor (ArrayList<Winkel> winkels,Context c){
this.inflater = LayoutInflater.from(c);
this.winkels = winkels;
}
@Override
public Holder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.card_item, parent, false);
return new Holder(view);
}
@Override
public void onBindViewHolder(Holder holder, int position) {
Winkel winkel = winkels.get(position);
holder.title.setText(winkel.getNaam());
if (winkel.isFavourtite()){
holder.icon.setImageResource(R.drawable.ic_star_black_18dp);
}
else{
holder.icon.setImageResource(R.drawable.ic_star_border_black_18dp);
}
}
@Override
public int getItemCount() {
return winkels.size();
}
class Holder extends RecyclerView.ViewHolder implements View.OnClickListener{
private TextView title;
private View container;
private ImageView icon;
public Holder(View itemView) {
super(itemView);
title = (TextView)itemView.findViewById(R.id.lbl_item_text);
container = itemView.findViewById(R.id.cont_item_root);
icon = (ImageView) itemView.findViewById(R.id.im_item_icon_secondary);
icon.setOnClickListener(this);
container.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if(v.getId()==R.id.cont_item_root){
Log.d("lol",Integer.toString(getAdapterPosition()));
itemCLickCallback.onItemClick(getAdapterPosition());
}
else{
itemCLickCallback.onSecItemClick(getAdapterPosition());
}
}
}
}
错误消息:
java.lang.NullPointerException: Attempt to invoke interface method 'void com.example.hoofdgebruiker.winkelskortrijk.Utill.Adaptor$ItemCLickCallback.onItemClick(int)' on a null object reference.
我的代码一直在运行,我得到了recyclerview,这些项目都在其中,但是我不能单击其中任何一个而不得到这个错误,我不明白为什么。我做错了什么,它是一个空对象引用?我的两个日志都没有显示
编辑:此处使用的是我的回调方法:
@Override
public void onSuccess(ArrayList<Winkel> winkels) {
mijnwinkels = winkels;
Adaptor adaptor = new Adaptor(mijnwinkels, this.getActivity());
mRecyclerView.setLayoutManager(new LinearLayoutManager(this.getActivity()));
mRecyclerView.addItemDecoration(new VerticalSpace(30));
mRecyclerView.setAdapter(adaptor);
adaptor.setItemCLickCallback(this);
}
@覆盖
成功时公开作废(ArrayList winkels){
mijnwinkels=winkels;
Adaptor Adaptor=新适配器(mijnwinkels,this.getActivity());
mRecyclerView.setLayoutManager(新的LinearLayoutManager(this.getActivity());
mRecyclerView.附加装饰(新垂直空间(30));
mRecyclerView.setAdapter(适配器);
adapter.setItemCLickCallback(此选项);
}
方法参数中有一个输入错误
public void setItemCLickCallback(final ItemCLickCallback itemCLickCallback1){
this.itemCLickCallback = itemCLickCallback;
}
您需要itemCLickCallback1并分配itemCLickCallback(注意额外的'1'作为后缀的区别)。@R.Zagórski我有一个参考,我添加了代码。我只是不知道我哪里做错了,我技术上知道如何修复nullpointerexception,我只是不知道如何在这段代码中修复它?:)谢谢你,非常愚蠢的错误,我正要重写整件事。谢谢
public void setItemCLickCallback(final ItemCLickCallback itemCLickCallback1){
this.itemCLickCallback = itemCLickCallback;
}