AndroidListView工作原理完全解析(转自 郭霖老师博客)

观书散遗帙,探古穷至妙。这篇文章主要讲述AndroidListView工作原理完全解析(转自 郭霖老师博客)相关的知识,希望能为你提供帮助。
转载请注明出处: http://blog.csdn.net/guolin_blog/article/details/44996879


在android所有常用的原生控件当中, 用法最复杂的应该就是ListView了, 它专门用于处理那种内容元素很多, 手机屏幕无法展示出所有内容的情况。ListView可以使用列表的形式来展示内容, 超出屏幕部分的内容只需要通过手指滑动就可以移动到屏幕内了。
【AndroidListView工作原理完全解析(转自 郭霖老师博客)】

另外ListView还有一个非常神奇的功能, 我相信大家应该都体验过, 即使在ListView中加载非常非常多的数据, 比如达到成百上千条甚至更多, ListView都不会发生OOM或者崩溃, 而且随着我们手指滑动来浏览更多数据时, 程序所占用的内存竟然都不会跟着增长。那么ListView是怎么实现这么神奇的功能的呢? 当初我就抱着学习的心态花了很长时间把ListView的源码通读了一遍, 基本了解了它的工作原理, 在感叹Google大神能够写出如此精妙代码的同时我也有所敬畏, 因为ListView的代码量比较大, 复杂度也很高, 很难用文字表达清楚, 于是我就放弃了把它写成一篇博客的想法。那么现在回想起来这件事我已经肠子都悔青了, 因为没过几个月时间我就把当初梳理清晰的源码又忘的一干二净。于是现在我又重新定下心来再次把ListView的源码重读了一遍, 那么这次我一定要把它写成一篇博客, 分享给大家的同时也当成我自己的笔记吧。


首先我们先来看一下ListView的继承结构, 如下图所示:


AndroidListView工作原理完全解析(转自 郭霖老师博客)

文章图片




可以看到, ListView的继承结构还是相当复杂的, 它是直接继承自的AbsListView, 而AbsListView有两个子实现类, 一个是ListView, 另一个就是GridView, 因此我们从这一点就可以猜出来, ListView和GridView在工作原理和实现上都是有很多共同点的。然后AbsListView又继承自AdapterView, AdapterView继承自ViewGroup, 后面就是我们所熟知的了。先把ListView的继承结构了解一下, 待会儿有助于我们更加清晰地分析代码。



Adapter的作用

    推荐阅读