Android中一个关于ListView的奇怪问题
2016-02-19 18:22
399 查看
今天在做项目的时候发现了一个比较奇怪的问题,是关于ListView的,即ListView的android:height属性会影响程序中ListView的getView()方法的调用次数,如果设置ListView的android:height属性为0dp,同时设置android:weight=1,或者直接设置android:height属性为"wrap_content",那么ListView在展示数据的时候,getView()被执行的次数并不会是传入数据集合的size,而会比size的值大一些甚至大数倍,但是如果把ListView的android:height属性设置为match_parent的话,getView()被执行的次数就正好是传入数据集合的size。
那么此现象会对程序造成什么影响呢,我在做项目的过程中受到的影响是——如果ListView的android:height属性不为"match_parent"时,那么当ListView条目中有CheckBox需要根据数据自动被选中时,会造成错乱,而且每次重新进入此界面,ListView条目中CheckBox被选中的情况都是不一样的,我只是发现了这一种影响,但是我猜想还存在其它的一些影响。
通过在网上查阅了相关资料,对此种现象的解释大概是这样的:
我们一般都是将ListView的android:height属性设置为match_parent,这样就可以在程序中直接测量出ListView的实际高度,但是如果我们将高度属性设置为wrap_content,或者0dp(同时设置weight为1),则将导致ListView的实际高度无法测量,还需要一些计算才能确定ListView的实际高度,而在计算过程中会触发ListView的渲染,在渲染的时候getView()将会多次被调用,这样就导致getView()被调用的次数是传入数据集合大小的数倍。
因此在实际项目中,最好是把ListView的高度属性设置为match_parent,这样能够优化程序的效率。
那么此现象会对程序造成什么影响呢,我在做项目的过程中受到的影响是——如果ListView的android:height属性不为"match_parent"时,那么当ListView条目中有CheckBox需要根据数据自动被选中时,会造成错乱,而且每次重新进入此界面,ListView条目中CheckBox被选中的情况都是不一样的,我只是发现了这一种影响,但是我猜想还存在其它的一些影响。
通过在网上查阅了相关资料,对此种现象的解释大概是这样的:
我们一般都是将ListView的android:height属性设置为match_parent,这样就可以在程序中直接测量出ListView的实际高度,但是如果我们将高度属性设置为wrap_content,或者0dp(同时设置weight为1),则将导致ListView的实际高度无法测量,还需要一些计算才能确定ListView的实际高度,而在计算过程中会触发ListView的渲染,在渲染的时候getView()将会多次被调用,这样就导致getView()被调用的次数是传入数据集合大小的数倍。
因此在实际项目中,最好是把ListView的高度属性设置为match_parent,这样能够优化程序的效率。
相关文章推荐
- Android原生定位
- 02-19 17:57:05.024: E/AndroidRuntime(27831): java.lang.RuntimeException: Unable to start activity
- android:TableLayout表格布局详解
- android: android中dip、dp、px、sp和屏幕密度
- Android知识结构
- 使用apktool 2.0 反编译和批量打包
- Android studio错误Installation failed since the device possibly has stale dexed jars that don't match
- 圆形头像以及一些常见需求形状自定义ImageView组件
- Android需要学习的控件
- 从零開始学android<TabHost标签组件.二十九.>
- Android Studio Gradle多渠道打包
- Android利用方向传感器获得手机的相对角度实例说明
- 一步一步学ROP之Android ARM 32位篇
- ANDROID_MARS学习笔记_S02_011_ANIMATION_LayoutAnimationController
- android中图片,文字拖动效果
- 改变屏幕后,Activity、Fragment的生命周期变化
- android Animation 动画效果收集
- android屏幕适配建议 (二)
- Android Volley完全解析(四),带你从源码的角度理解Volley
- 阅读《Android 从入门到精通》(27)——选项菜单