在我的 GridView 的 getView() 方法中,我正在执行以下操作:
public View getView(int position, View convertView, ViewGroup parent) {
convertView = this.inflater.inflate(..);
ImageView image = (ImageView) convertView
.findViewById(R.id.imageButton1);
imageLoader.displayImage("URL/"
+ sampleArray.get(position), image);
这里的 sampleArray 是我在创建 Adapter 时加载的数组。它在延迟加载(使用此工具:https ://github.com/nostra13/Android-Universal-Image-Loader )这些图像时使用,并且基本上是确定要加载的图片的图像 URL 的一部分。现在,据我所知,最好的做法是仅在视图为空时才对视图进行膨胀:
if(convertView == null){
this.inflater.inflate(...);
当我这样做时,它实际上更快,但图像加载很奇怪。如果我向下滚动并向上滚动,图像会在行内切换,这意味着在顶行中,第一列图像可能会与第二列图像随机切换。我使用的数组 (sampleArray) 没有改变。我知道这与调用位置和 getView() 有关,但我不确定为什么会发生这种行为。
如果我按照现在的方式(第一个代码块)进行操作,这意味着我每次都会对其进行充气,它可以完美运行,但加载速度很慢。为什么这种行为会这样工作?
提前致谢。
编辑:
这就是我认为正在发生的事情。GetView() 被多次调用,这与“位置”参数不同步,导致从数组中挑选出错误的元素。我仍然对此感到困惑。