[英]Android Recyclerview, loading same images from URl using Glide
[英]Android gridView loading images using adapter and Glide
我正在使用GridView显示20张图像。 我正在使用我创建的适配器中的Glide从Web上获取并显示图像。 问题在于,即使所有图像都已下载,当我滚动网格视图时,我也会看到图像以淡淡的动画形式出现。 我不要这个。 我想将所有图像加载到gridview中,但是如果我滚动得更快,就不会看到它们出现。
我试过使用diskcache()和dontAnimate(),但是它没有解决我的问题。 我认为问题是我正在显示gridview的4个单元格。 当我滚动时,适配器调用getView以显示其他两个单元格并删除我正在向上滚动的2个单元格。 问题在于,每次getview都要花时间显示其他两个单元格,而我的效果看起来像是加载。 我希望我的方案看起来像一个网格视图,其中所有20个单元格都已存在并已分配。
这是我的适配器:
public class ImagesAdapter extends BaseAdapter {
private Context mContext;
private ArrayList<Picture> images;
public ImagesAdapter(Context context, int resource, ArrayList<Picture> inputImages) {
super();
this.mContext = context;
this.images = inputImages;
}
@Override
public int getCount() {
return images.size();
}
@Override
public Picture getItem(int position) {
return images.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View row = convertView;
ViewHolder holder = null;
if (row == null) {
row = LayoutInflater.from(mContext).inflate(R.layout.grid_item_layout, null);
holder = new ViewHolder();
holder.imageView = (ImageView) row.findViewById(R.id.grid_item_image);
holder.id = images.get(position).getImageId();
row.setTag(holder);
}
else {
holder = (ViewHolder) row.getTag();
holder.id = images.get(position).getImageId();
}
Picture pic = images.get(position);
Glide
.with(mContext)
.load(pic.getBigImageUrl())
.into(holder.imageView);
return row;
}
public class ViewHolder {
ImageView imageView;
public String id;
}
}
有人可以帮我找到解决方案吗?
您应该添加磁盘缓存策略以从缓存加载图像。 您可以使用SOURCE或RESULT; SOURCE仅将原始数据保存到高速缓存,而RESULT在所有转换后保存媒体项到高速缓存。 例如 :
Glide
.with(mContext)
.load(pic.getBigImageUrl())
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.into(holder.imageView);
尝试像以下示例一样使用缓存机制:
Glide.with(mContext)
.load(pic.getBigImageUrl())
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.dontAnimate().into(holder.imageView);
尝试添加可以解决您的问题的占位符
Glide
.with(mContext)
.load(pic.getBigImageUrl())
.placeholder(R.drawable.defaultImage)
.into(holder.imageView);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.