我使用GridView显示20张图片。我在我创建的适配器中使用Glide从网络中获取和显示图像。问题在于,如果下载了所有图像,当我滚动网格视图时,我看到图像显示为像动画一样的淡入淡出。我没有'想要这个。如果我滚动得更快,我希望在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;
}
}
有人可以帮我找到解决方案吗?
答案 0 :(得分:0)
试试这个
Glide
.with(mContext)
.load(pic.getBigImageUrl())
.placeholder(R.drawable.defaultImage)
.into(holder.imageView);
答案 1 :(得分:0)
您应该添加磁盘缓存策略以从缓存加载图像。 你可以使用SOURCE或RESULT; SOURCE仅将原始数据保存到缓存和RESULT将所有转换后的媒体项保存到缓存。 例如:
Glide
.with(mContext)
.load(pic.getBigImageUrl())
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.into(holder.imageView);
答案 2 :(得分:0)
尝试使用缓存机制,如下例所示:
Glide.with(mContext)
.load(pic.getBigImageUrl())
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.dontAnimate().into(holder.imageView);
答案 3 :(得分:0)
尝试添加可解决您问题的占位符
Glide
.with(mContext)
.load(pic.getBigImageUrl())
.placeholder(R.drawable.defaultImage)
.into(holder.imageView);