首先,我上课讲过ListView的工作原理,那么,我们先回顾一下: 1.ListView针对List中每个item,要求adapter给我一个视图(getView) 2.一个新的视图被返回并显示 如果我们有上亿个item要显示怎么办?为每个项目创建一个新视图?NO!这不可能,Android实际上为你缓存了视图。 Android中有个叫做Recycler(反复循环器)的构件,下图是它的工作原理: 
1.如果你有10亿个项目(item),其中只有可见的项目存在内存中,其他的在Recycler中; 2.ListView先请求一个type1视图(getView),然后请求其他可见的项目。conVertView在getView中时null的; 3.当item1滚出屏幕,并且一个新的项目从屏幕地段上来时,ListView再请求一个type1视图。convertView此时不是空值了,它的值是item1.你只需要设定新的数据返回convertView,不必重新创建一个视图。这样直接使用convertView从而减少了很不不必要view的创建。 现在是不是明白了。 |