【发布时间】:2013-08-24 17:24:01
【问题描述】:
我有一个非常令人沮丧的问题,我不知道出了什么问题。 我构建了仅包含 GridView 的简单 XML。这个 gridview 应该显示从我用我的代码检索的特定 url 下载的图像 (ImageView)。
所以这个APP的想法只是从URLS下载图片并在GridView中显示这些图片。首先我必须说我正在使用通用图像加载器库。首先请看我的getView代码:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView iv;
if(convertView == null) {
iv = new ImageView(MyActivity.this);
iv.setLayoutParams(new GridView.LayoutParams(size,size));
iv.setScaleType(ImageView.ScaleType.CENTER_CROP);
Log.d("APP", "convertView is NULL");
}
else {
iv = (ImageView) convertView;
Log.d("APP", "convertView is NOT null");
}
loader.displayImage(URLS.get(position), iv);
return iv;
}
问题:
上面的代码有效,它在 GridView 中显示图像。但是当我向下滚动时,我看到了:
- 所有图片都已下载(即使是那些不可见的图片)
- 当我向上滚动时,我看到位于 0 位的图像位于 1 位并且已再次下载。当我向下滚动时,图像再次切换位置。向上滚动,我再次看到图像再次切换位置(并再次下载)。这是无限的。
我是如何解决这个问题的:
我通过不检查 convertView 变量是否为空来解决了这个问题。实际上我省略了 if/else 子句。
我在内存中使用了缓存 = true。因此,下载停止和图像将永远存在。
那我为什么要寻求帮助?主要是因为我知道出于性能原因我不应该省略 if/else 子句。我不想弄乱用户的记忆,我想给他们带来快速可靠的用户体验。我也想知道有什么问题。
感谢您的帮助。非常感谢。
【问题讨论】:
标签: java android gridview universal-image-loader