ListView[2] 源码解析
来源:互联网 发布:歌曲消原唱软件 编辑:程序博客网 时间:2024/05/18 11:26
【参考链接】
AndroidListView工作原理完全解析,带你从源码的角度彻底理解http://blog.csdn.net/guolin_blog/article/details/44996879
ListView当中使用了View复用机制
其父类AbsListView中有个RecycleBin子类,其中有ActiveViews和ScrapViews两个成员变量,主要是ScrapViews的作用。
其中
在进行初始的测量、布局时
会先将子Views全部移动到ActiveViews中(就是改变数组的引用),并用mFirstActivePosition记录下第一个item在datas中的position
然后从上至下重新获取子View
根据position
先从ActiveViews中获取
如果获取的到,则再将其从ActiveViews移动到子Views中,
如果获取不到,则先从ScrapViews中获取一个View,作为contentView参数,传递给Adapter的getView()方法,返回一个View添加到子Views中
完了以后ActiveViews中剩下的View再移动到ScrapViews中
在滑动的时候
会通过改变子Views的mTop、mBottom属性来达到移动的效果
如果有子View移出了界面,则将其移动到ScrapViews中
如果有新的item要移入界面,则按照上面的获取逻辑去获取新的子View并添加到子Views中
所以,通过移动到ScrapViews和从ScrapViews中获取并转换使用,移出屏幕的子View会很快会被移入屏幕的重新利用起来。
此外,上面的流程中
从子Views中移除 和添加到子Views中,使用的方法是detachViewFromParent()和attachViewToParent()
这两个相对于addView()和removeView()要轻量一些,只是删除了子Views数组的引用,省去了调用requestLayout()、重新生成LayoutParams等操作,有助于效率。
- ListView[2] 源码解析
- android源码解析--ListView
- android源码解析--ListView
- ListView源码解析
- android listview源码解析
- listview源码解析
- Listview源码解析(一)
- ListView 源码解析
- ListView 源码解析
- ListView源码解析
- ListView源码解析(二) Adapter
- android源码解析--ListView(上)
- 源码解析ListView中的RecycleBin机制
- 王学岗ListView和源码解析(一)
- 王学岗ListView和源码解析(二)
- 王学岗ListView和源码解析(三)
- ListView动画展开布局 ExpandableLayout源码解析
- ListView深入源码解析及其常见问题解决方案
- 能量最小原理
- Docker 基础
- Android ActionBar高级自定义——设置标题居中和添加控件
- 外卖订单量预测异常报警模型实践
- PostgreSQL ALTER TABLE中改变数据类型时USING的用法
- ListView[2] 源码解析
- iOS — tableView头视图缩放效果。
- ASP.NET Eval四种绑定方式
- 快速制作演示动画的工具TurboDemo常见问题合集(一)
- 结课项目:聊天室
- MATLAB学习笔记七(关于图像处理)
- javascript实现删除前弹出确认框
- Java Web权限管理
- 宋喆刑事拘留 被拐跑的王宝强老婆马蓉不离婚了