내 어댑터 :Recyclerview는 참조
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());
}
}
}
}
내 개요 조각 :
@Override
public void onItemClick(int p) {
Log.d("lol",(Integer.toString(p)));
Winkel winkel = (Winkel) mijnwinkels.get(p);
Bundle detailsBundle = new Bundle();
detailsBundle.putString(DETAILS_NAAM,winkel.getNaam());
detailsBundle.putString(DETAILS_ADRES,winkel.getAdres());
detailsBundle.putString(DETAILS_DEELGEMEENTE,winkel.getDeelGemeente());
detailsBundle.putString(DETAILS_GEMEENTE,winkel.getGemeente());
detailsBundle.putString(DETAILS_POSTCODE,winkel.getPostcode());
Details detail= new Details();
detail.setArguments(detailsBundle);
this.getFragmentManager().beginTransaction()
.replace(R.id.details,detail,null)
.addToBackStack(null)
.commit();
}
오류 메시지 :
내 코드는 시점까지 노력하고 있습니다java.lang.NullPointerException: Attempt to invoke interface method 'void com.example.hoofdgebruiker.winkelskortrijk.Utill.Adaptor$ItemCLickCallback.onItemClick(int)' on a null object reference.
어디 저에게 recyclerview를 얻으십시오, 품목은 그것에있다, 그러나 나는이 오류를 얻지 않고 그 (것)들의 무엇이든을 클릭 할 수없고 왜 이해하지 않는다. 내가 null 객체 참조라는 것을 잘못하고 있습니까? 어느 로그도 보이지 않습니다.
편집 : 내 방법 onItemCLickCallback 여기에 사용됩니다
@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);
}
@ R.Zagórski 여기에 대한 참조가 있습니다. 코드를 추가했습니다. 난 그냥 내가 뭔가 잘못하고있어, 내가 기술적으로 nullpointerexception을 해결하는 방법을 알고, 나는 단지이 코드에서 그것을 수정하는 방법을 모르겠 참조하십시오? – user3117628