2016-05-12 62 views
0

我有一個RecylerView,其中每個項目都包含Iamge,以加載我正在使用Glide的圖像。我面臨的問題是,列表中的一些圖像沒有顯示出來,並且在我的onException中回調異常和模型對於這些圖像都是空的。Glide在加載中缺少一些圖像

enter image description here

如果你在列表中看到的圖像的第四個項目沒有顯示。

這裏是我如何編碼這種

Glide.with(context).load(productItem.getImg()) 
       .diskCacheStrategy(DiskCacheStrategy.SOURCE) 
       .listener(new RequestListener<String, GlideDrawable>() { 
        @Override 
        public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) { 
         if(e != null) { 
          e.printStackTrace(); 
         } 
         return false; 
        } 

        @Override 
        public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { 
         return false; 
        } 
       }). 
       into(holder.imageViewModel); 
enter code here 

和XML我有ImageView的聲明這樣

<ImageView 
     android:id="@+id/imageViewModel" 
     android:layout_width="100dp" 
     android:layout_height="100dp" 
     android:layout_margin="@dimen/cart_vertical_margin"/> 
+0

使用'SimpleTarget'加載您位圖,您可以在其中爲服務器的加載圖像提供所需的高度和寬度。 – Piyush

+0

SimpleTarget?我如何使用SimpleTarget? – user2934930

+0

有些時候,滑動會拋出異常,以防它無法加載或網絡等問題。我已經解釋了使用滑動的最佳方式,相信它會幫助你很多。請參閱此鏈接http://stackoverflow.com/a/39336438/3636561 –

回答

0

使用下列內容:

Glide.with(mContext).load(productItem.getImg()).asBitmap().centerCrop().into(new SimpleTarget<Bitmap>(200, 200) { 
      @Override 
      public void onResourceReady(Bitmap arg0, GlideAnimation<? super Bitmap> arg1) { 
       // TODO Auto-generated method stub 
       if (arg0 != null) { 
        holder.imageViewModel.setImageBitmap(arg0); 
       } else { 
        holder.imageViewModel.setImageResource(R.drawable.ic_launcher); 
       } 
      } 
     }); 
+0

仍然有相同的問題,也通過使用這種方法,我將無法緩存圖像? – user2934930