2016-07-29 2 views
-1

내 어댑터 :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); 
} 
+0

@ R.Zagórski 여기에 대한 참조가 있습니다. 코드를 추가했습니다. 난 그냥 내가 뭔가 잘못하고있어, 내가 기술적으로 nullpointerexception을 해결하는 방법을 알고, 나는 단지이 코드에서 그것을 수정하는 방법을 모르겠 참조하십시오? – user3117628

답변

1

이 메소드 인수 당신은 itemCLickCallback1를 기대하고 itemCLickCallback가 ('여분의 차이를 느낄 할당하는

public void setItemCLickCallback(final ItemCLickCallback itemCLickCallback1){ 
    this.itemCLickCallback = itemCLickCallback; 
} 

을에 오타가있다 (1) '접미사로).

+0

:) 고마워, 바보 같은 오류, 나는 모든 것을 다시 쓰려고했다. 감사 – user3117628

관련 문제