findViewById源码解析
来源:互联网 发布:js正则判断是否是数字 编辑:程序博客网 时间:2024/06/09 21:51
一直都在用findViewById来初始化view,但不知道里面具体的实现,先看下findViewById源码。
public final View findViewById(@IdRes int id) { if (id < 0) { return null; } return findViewTraversal(id);}
最后调用findViewTraversal方法。
protected View findViewTraversal(@IdRes int id) { if (id == mID) { return this; } return null;}
可以看出如果id相等就直接返回这个view,因为一般是viewgroup使用findViewById,所以viewgroup应该重写了这个方法。
protected View findViewTraversal(@IdRes int id) { if (id == mID) { return this; } final View[] where = mChildren; final int len = mChildrenCount; for (int i = 0; i < len; i++) { View v = where[i]; if ((v.mPrivateFlags & PFLAG_IS_ROOT_NAMESPACE) == 0) { v = v.findViewById(id); if (v != null) { return v; } } } return null;}
可以看出viewGroup的id等于要找的id直接返回viewGroup子类,不等于的话就遍历viewGoup包含的view。
0 0
- findViewById源码解析
- android笔记01-findViewById()源码解析
- FindViewById
- findViewById
- findViewById
- findViewById
- findViewById
- findViewById
- fragment findViewById()返回null完全解析
- android LayoutInflater、setContentView、findviewbyid 区分解析
- [Android] Fragment findViewById()返回null完全解析
- 【Fragment精深系列5】fragment findViewById()返回null完全解析
- 【Fragment精深系列5】fragment findViewById()返回null完全解析
- Butterknife全方位解析-摆脱繁琐的findViewById(int id)
- 源码解析
- 源码解析
- ButterKnife -- 源码分析 -- 在‘编译期’间生成findViewById等代码
- 关于findViewById
- sql优化(转载)
- 面试前的准备(java专业 ~学习算法排序以及查找)
- 再见了!网易
- MVP (1)- Android mvp 架构的自述
- 安装apache、php
- findViewById源码解析
- 第一次上课
- 【8】机器学习之屠龙宝剑:GBDT
- laravel运行composer update时出现如下错误信息的解决方案
- 属性
- 用Eclipse和GDB构建ARM交叉编译和在线调试环境
- Single Number III
- mysql left join on 与 where 筛选的差异
- Linux上用udev自动识别并挂载U盘