07
2020
07

ListView 优化

工作原理 :


ListView 针对 List 中每个 item ,要求 adapter “ 给我一个视图 ” (getView) 。


一个新的视图被返回并显示


如果我们有上亿个项目要显示怎么办?为每个项目创建一个新视图? NO! 这不可能!


实际上 Android 为你缓存了视图。


Android 中有个叫做 Recycler 的构件,下图是他的工作原理:


如果你有 10 亿个项目 (item) ,其中只有可见的项目存在内存中,其他的在 Recycler 中。


1. ListView 先请求一个 type1 视图 (getView) 然后请求其他可见的项目。 convertView 在 getView 中是空 (null) 的 。


2. 当 item1 滚出屏幕,并且一个新的项目从屏幕低端上来时, ListView 再请求一个 type1 视图。convertView 此时不是空值了,它的值是 item1 。你只需设定新的数据然后返回 convertView,不必重新创建一个视图。

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。