2016-04-14 4 views
0

ich bin neu auf Glide verwenden. ich versuche Bild aus dem externen Speicher zu laden, aber ich habe Fehler in logcat:Warum mein Kontext auf glide zurück Fehler Null in Logcat?

enter image description here

es ist meine Klasse von recycleview Adapter, glide für Last Bild verwenden:

List<TourModel> mItems; 
    private Context mContext; 

    public class ViewHolder extends RecyclerView.ViewHolder{ 
     public ImageView mIvMain,mIvStar1,mIvStar2,mIvStar3,mIvStar4,mIvStar5; 
     public TextView mTvTitle,mTvPrice; 
     public RelativeLayout mLayoutContainer; 
     public ViewHolder(View mItemView) { 
      super(mItemView); 
      mIvMain = (ImageView) mItemView.findViewById(R.id.listFragmentMain_IvMain); 
      mIvStar1= (ImageView) mItemView.findViewById(R.id.listFragmentMain_IvStar1); 
      mIvStar2= (ImageView) mItemView.findViewById(R.id.listFragmentMain_IvStar2); 
      mIvStar3= (ImageView) mItemView.findViewById(R.id.listFragmentMain_IvStar3); 
      mIvStar4= (ImageView) mItemView.findViewById(R.id.listFragmentMain_IvStar4); 
      mIvStar5= (ImageView) mItemView.findViewById(R.id.listFragmentMain_IvStar5); 
      mTvTitle = (TextView) mItemView.findViewById(R.id.listFragmentMain_TvTitle); 
      mTvPrice = (TextView) mItemView.findViewById(R.id.listFragmentMain_TvPrice); 
      mLayoutContainer = (RelativeLayout)mItemView.findViewById(R.id.listFragmentMain_LayoutContainer); 
     } 
    } 

    public TourListRvAdapter(Context mContext,List<TourModel> mModel) { 
     this.mItems = mModel; 
     this.mContext = mContext; 
    } 

    @Override 
    public ViewHolder onCreateViewHolder(ViewGroup mViewGroup, int i) { 
     View mView = LayoutInflater.from(mViewGroup.getContext()).inflate(R.layout.list_fragment_main, mViewGroup, false); 
     ViewHolder mViewHold = new ViewHolder(mView); 
     return mViewHold; 
    } 

    @Override 
    public void onBindViewHolder(ViewHolder mViewHolder, int position) { 
     final TourModel mItems=this.mItems.get(position); 
     mViewHolder.mTvTitle.setText(mItems.getTitle()); 
     mViewHolder.mTvPrice.setText(mItems.getPrice() + ""); 

     Glide.with(mContext) 
       .load(Utility.LoadFileImg(mItems.getImage())) 
       .into(mViewHolder.mIvMain); 
    } 

und es ist meine Fragmentaktivität, die recycleview adapter aufruft und Variablenkontext dazu hinzufügt.

Ich weiß nicht, warum meine Variable mContext null zurückgibt, kann mir jemand helfen? Bitte.

Antwort

3

Verwenden Sie mViewHolder.itemView.getContext(), das ist der gleiche Kontext, den Sie in onCreateViewHolder verwenden, um Ihre Ansicht aufzublasen, anstatt einen Verweis auf in Ihrem Adapter zu halten. mContext ist null, weil Sie das Mitglied

private final Context mContext = getActivity(); 

Das Fragment durch seinen Lebenszyklus zu diesem Zeitpunkt und getActivity gehen nicht initialisiert wird() ist null

+0

* Rückkehr, welche die gleichen Kontext, in den Sie verwenden ist onCreateViewHolder * ... also immernoch null ... da das Hauptproblem 'private final Context mContext = getActivity();' in dem Fragment – Selvin

+0

ist vielleicht schlecht formuliert @Selvin. 'onCreateViewHolder' verwendet die ViewGroup, um die Ansicht aufzublasen. Das, was ich meinte – Blackbelt

+0

ich habe es bereits geändert, danke, Ihr Code ist Arbeit :) @Blackbelt – itsa04g9