【发布时间】:2016-05-26 04:58:05
【问题描述】:
我使用毕加索在我的图库页面中加载图像,并使用 Recyclerview 从服务器加载图像。它在所有设备上都运行良好,三星 S4 设备除外。在 S4 设备中,图像已损坏,并且在所有图像上显示一些水平线。我的问题是什么代码。另外,我认为在将我的支持库版本从 22.2.1 更新到 23.3.0 之前,它在同一 S4 设备上运行良好。
GalleryAdapter.java
@Override
public void onBindViewHolder(GalleryViewHolder galleryViewHolder, final int position) {
// Load images from Assets using Picasso library.
Picasso picasso = Picasso.with(context);
//picasso.setLoggingEnabled(true);
//picasso.setIndicatorsEnabled(true);
if(AppUtilities.isNetworkConnected(context)){
picasso.load(imagesArrayList.get(position).getUrl())
.placeholder(android.R.color.darker_gray)
.fit()
.centerCrop()
.memoryPolicy(MemoryPolicy.NO_CACHE)
.networkPolicy(NetworkPolicy.NO_CACHE)
.into(galleryViewHolder.galleryImageView);
}
else{
picasso.load(imagesArrayList.get(position).getUrl())
.placeholder(android.R.color.darker_gray)
.fit()
.centerCrop()
.into(galleryViewHolder.galleryImageView);
}
}
public class GalleryViewHolder extends RecyclerView.ViewHolder {
protected ImageView galleryImageView;
public GalleryViewHolder(View itemView) {
super(itemView);
this.galleryImageView = (ImageView) itemView.findViewById(R.id.gallery_imageview);
}
}
【问题讨论】:
-
我认为您的 if..else... 条件有问题。只需在两种情况下打印日志即可。我认为两者都可能被处决。
-
@PiyushGupta 即使没有 if else 代码,也会出现此问题。即使单独放置 else case 代码也会发生。
-
尝试使用其他占位符
-
因为你的代码看起来不错,我建议从库中挖掘issues,如果你什么也没找到,最后自己打开一个。 :)
标签: android picasso android-image image-caching