2016-05-12 61 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