从适配器内部处理多个getView调用的最佳方法

发布于 2021-01-30 22:41:54

我有一个ListView风俗习惯ArrayAdapter。此行中的每一行ListView都有一个图标和一些文本。这些图标在后台下载,缓存并使用回调(分别替换为)进行下载ImageViews。每次getView()运行都会触发从缓存或下载中获取缩略图的逻辑。

现在,根据Romain Guy所说:

“绝对不能保证getView()的调用顺序和次数。

我已经看到这种情况的发生,因为大小为2的一行getView()被调用了6次!

如何更改代码以避免重复的缩略图获取请求并处理视图回收?

谢谢。

关注者
0
被浏览
303
1 个回答
  • 面试哥
    面试哥 2021-01-30
    为面试而生,有面试问题,就找面试哥。

    从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
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看