适配器的当中getView方法调用
2016-07-31 12:37
148 查看
View在Draw的时候分成两个阶段:measure和layout,在measure阶段时主要就是为了计算两个参数:height和width。而且要注意的是,这是个递归的过程,从顶向下,DecorView开始依次调用自己子元素的measure。计算完成这两个参数后就开始layout,最后再是draw的调用。
对于ListView,当然每一个Item都会被调用measure方法,而在这个过程中getView和getCount会被调用,而且看用户的需求,可能会有很多次调用。
而为什么会有很多组次调用呢?
问题就在于在layout中的决定ListView或者它的父元素的height和width属性的定义了。fill_parent会好一点,计算方法会比较简单,只要跟父元素的大小相似就行,但是即使是fill_parent,也不能给View当饭吃,还是要计算出来具体的dip,所以measure还是会被调用,只是可能比wrap_content的少一点。至于自适应的它会一直考量它的宽和高,根据内容(也就是它的子Item)计算宽高。可能这个measure过程会反复执行,如果父元素也是wrap_content,这个过程会更加漫长。
所以,解决方法就是尽量避免自适应,除非是万不得已,固定大小或者填充的效果会比较好一些。
对于ListView,当然每一个Item都会被调用measure方法,而在这个过程中getView和getCount会被调用,而且看用户的需求,可能会有很多次调用。
而为什么会有很多组次调用呢?
问题就在于在layout中的决定ListView或者它的父元素的height和width属性的定义了。fill_parent会好一点,计算方法会比较简单,只要跟父元素的大小相似就行,但是即使是fill_parent,也不能给View当饭吃,还是要计算出来具体的dip,所以measure还是会被调用,只是可能比wrap_content的少一点。至于自适应的它会一直考量它的宽和高,根据内容(也就是它的子Item)计算宽高。可能这个measure过程会反复执行,如果父元素也是wrap_content,这个过程会更加漫长。
所以,解决方法就是尽量避免自适应,除非是万不得已,固定大小或者填充的效果会比较好一些。
相关文章推荐
- 在适配器中,何时调用getView()方法?
- 关于ListView的适配器中的getView方法调用多少次的现象探究,很诡异的!!!!
- Android listview&gridview getview 方法多次调用问题解决方法 并附上单页加载实现问卷调查适配器源代码
- android listview继承BaseAdapter,自定义的适配器,getView方法执行多组循环解决方式
- Android listview&gridview getview 方法多次调用问题解决方法
- 适配器中的getView方法
- ListView中getView的原理与解决多轮重复调用的方法
- ListView连续调用getView方法的分析与解决
- 【Android】 ListView中getView的原理与解决多轮重复调用的方法
- 自定义适配器重写getView()方法和setTag()、getTag()的理解。
- AdapterView(Gallery、ListView、GridView) 调用了getCount 方法但是没有调用getView方法
- Android ListView的适配器 Adapter 中GetView方法调用次数大于数据条数的问题
- 小技巧:C++限制一个方法只能在某个类当中被调用
- android-继承BaseAdapter--自定义适配器,getView执行多次的解决方法
- 自定义适配器视图getview实现方法比较
- listview重复调用getView()方法,解决
- 【win32 app调用html方法】 CHtmlView当前浏览器打开新窗口--我看完之后感觉是 html当中的信息映射的处理方法
- 【Android】ListView中getView的原理与解决多轮重复调用的方法
- ListView多次调用getView方法
- ListView GridView,ViewpAger等的getView方法调用多次