ListView中getView的原理与解决多轮重复调用的方法
来源:互联网 发布:西安淘宝代运营 编辑:程序博客网 时间:2024/05/01 10:43
【0】ListView中getView的工作原理:
[1]ListView asks adapter “give me a view” (getView) for each item of the list.(通过getView来获取每个item)
[2]A new View is returned and displayed(获取到后返回显示)
那么如果我们有大量的数据需要显示的时候,每个Item都去重复执行getView中的创建新的View的动作吗?这样做会耗费大量的资源去执行重复的事情,实际上Android为我们提供了一套重复利用的机制叫做“Recycler”:
原理简单描述下就是这样:
在一个完整的ListView第一次出现时,每个Item都是Null的,getView的时候会跑到需要inflate一个Item的代码段,假设整个view只能最多显示10个item,那么当滑动到第11个Item的时候,第一个item会放入“recycler”,如果第11个Item和放入“Recycler”的item的view一致,那么就会使用"Recycler"里面的Item来显示,从而不用再重复inflate一次,这样大大节省了创建View的工作,在需要显示大量数据时显得尤为重要。
工作原理的示意图如下:
每滑动一次到需要显示的Item的时候就会调用一次getView,理论上是10个Item,均显示一次的话是要调用getView() 10次的,那么为什么有时候很奇怪,10个item显示一次也许会调用getView 20次,甚至40-50次呢?我想肯定很多人都遇到过这个问题,查了很久,其实我也没有找到root cause
- 【Android】ListView中getView的原理与解决多轮重复调用的方法
- 【Android】 ListView中getView的原理与解决多轮重复调用的方法
- 【Android】ListView中getView的原理与解决多轮重复调用的方法
- ListView中getView的原理与解决多轮重复调用的方法
- ListView中getView的原理与解决多轮重复调用的方法
- 【Android】ListView中getView的原理与解决多轮重复调用的方法
- ListView连续调用getView方法的分析与解决
- listview重复调用getView()方法,解决
- android listview中getView重复被调用的问题
- android listview中getView重复被调用的问题
- android listview中getView重复被调用的问题
- 关于ListView中getView被重复调用的问题
- android listview中getView重复被调用的问题
- 关于ListView中getView被重复调用的问题
- 关于ListView中getView被重复调用多次的问题
- ListView中getView的原理
- ListView中getView()的原理
- listView重复调用getView的问题
- 一起学CC3200系列教程之中断优先级设置
- 让Tomcat自动加载文件
- 每天一个学习一个新的php函数(2) array_diff()/array_diff_key()/array_diff_assoc()
- 什么是金蝶WMS系统金蝶WMS系统功能,使用仓库WMS系统,金蝶WMS有什么好处
- nginx 出现413 Request Entity Too Large问题的解决方法
- ListView中getView的原理与解决多轮重复调用的方法
- Android自定义Cursor遇到的一个小问题
- div+css 定位浅析
- 对浏览器地址栏输入信息的初步理解
- JS的基础类型与引用类型
- [OC学习笔记]文件管理
- ora-01031:insufficient privileges解决方法总结
- javascript深入理解js闭包
- Spring的OpenEntityManagerInViewFilter