从适配器内部处理多个getView调用的最佳方法
我有一个ListView
风俗习惯ArrayAdapter
。此行中的每一行ListView
都有一个图标和一些文本。这些图标在后台下载,缓存并使用回调(分别替换为)进行下载ImageViews
。每次getView()运行都会触发从缓存或下载中获取缩略图的逻辑。
现在,根据Romain Guy所说:
“绝对不能保证getView()
的调用顺序和次数。
我已经看到这种情况的发生,因为大小为2的一行getView()被调用了6次!
如何更改代码以避免重复的缩略图获取请求并处理视图回收?
谢谢。
-
从API。
public abstract View getView (int position, View convertView, ViewGroup parent)
convertView-尽可能重用的旧视图。注意:使用前,应检查此视图是否为非null并具有适当的类型。如果无法转换此视图以显示正确的数据,则此方法可以创建一个新视图。
因此,如果已经为该特定索引调用了getView,则
convertView
将是该第一次调用返回的View对象。您可以做类似的事情。
if(!(convertView instanceof ImageView)){ convertView = new ImageView(); //get image from whereever } else {} // ImageView already created