1.用递归的方式实现

// 遍历viewGroup

public int traverseViewGroup(View view) {

int viewCount = 0;

if (null == view) {

return 0;

}

if (view instanceof ViewGroup) {

//遍历ViewGroup,是子view加1,是ViewGroup递归调用

for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {

View child = ((ViewGroup) view).getChildAt(i);

if (child instanceof ViewGroup) {

viewCount += traverseViewGroup(((ViewGroup) view).getChildAt(i));

} else {

viewCount++;

}

}

} else {

viewCount++;

}

return viewCount;

}

2.用非递归方式实现

// 遍历viewGroup

public int traverseViewGroup(View view) {

int viewCount = 0;

if (null == view) {

return 0;

}

if (view instanceof ViewGroup) {

ViewGroup viewGroup = (ViewGroup) view;

LinkedListlinkedList = new LinkedList<>();

linkedList.add(viewGroup);

while (!linkedList.isEmpty()) {

//removeFirst()删除第一个元素,并返回该元素

ViewGroup current = linkedList.removeFirst();

viewCount++;

//遍历linkedList中第一个viewGroup中的子view

for (int i = 0; i < current.getChildCount(); i++) {

if (current.getChildAt(i) instanceof ViewGroup) {

linkedList.addLast((ViewGroup) current.getChildAt(i));

} else {

viewCount++;

}

}

}

} else {

viewCount++;

}

return viewCount;

}

android 遍历所有view,Android 算法:遍历ViewGroup找出所有子View相关推荐

  1. 算法题:找出整数数组中两个只出现一次的数字

    问题:一个整数数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字.要求时间复杂度为O(n),空间复杂度为O(1). 分析:这是一个很新颖的关于位运算的题目. 首先考虑这 ...

  2. 算法题解:找出包含给定字符的最小窗口(枚举的一般方法)

    题目分析 题目链接:https://leetcode.com/problems... 题目补充:t可以包含重复的字符,如果t包含了n个c,那么找出的window也要包含n个c. 窗口是由2个游标确定的 ...

  3. 二、C++反作弊对抗实战 (进阶篇 —— 4.遍历进程模块(暴力扫描整个内存找出被断链的))

    提示:以下是本篇文章正文内容,下面案例可供参考 一.前言 由于上一章节中的MsgBox已经被抹去PE头.断链隐藏了DLL,导致将无法正常遍历出当前进程的所有模块,这时候就需要用到暴力内存的方法了.因为 ...

  4. 算法1:找出第一个非重复字符在字符串中的位置

    详细描述 对于一个字符串,为了简便起见,假设字符串的所有字符都是英文的.这个字符串的长度不定,可长可短,内容也不确定,可能有大写,可能也有小写,有重复的,比如这样一个字符串 "this is ...

  5. Redis 实战篇:Geo 算法教你找出附近 “女朋友”!

    产品经理说他有一个 idea,为广大少男少女提供一个连接彼此的机会. 让处于这最美的年龄的少男少女能在每一个十二时辰里能邂逅到那个 Ta. 所以就想开发一款 App,用户登陆后能发现附近的那个 Ta, ...

  6. 每天一道算法题(27)——找出元音字母并排序

    题目: 有一字符串,里面可能包含英文字母(大写.小写).数字.特殊字符,现在需要实现一函数,将此字符串中的元音字母挑选出来,存入另一个字符串中,并对字符串中的字母进行从小到大的排序(小写的元音字母在前 ...

  7. java栈最小值的实现,关于java:算法图解如何找出栈中的最小值

    后面咱们学习了很多对于栈的常识,比方<动图演示:手撸堆栈的两种实现办法!>和<JDK 居然是这样实现栈的?>,那么接下来咱们再来刷一些对于栈的经典面试题以坚固学过的常识. 咱们 ...

  8. 小小c#算法题 - 1 - 找出数组中满足条件的两个数

    把一些东西放到网上,看的时候方便一些.代码可能有bug且不是最佳解决方案,仅供参考. 题目:输入一个按升序排序的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字. 要求时间复杂度是 ...

  9. 算法题:“找出单身狗”--找出一个数组中只出现一次的数字

    题目:一个数组中只有两个数字是出现一次,其他所有数字都出现了两次. 编写一个函数找出这两个只出现一次的数字. 解题过程以及思路:(思路在代码中以注释形式给出) //一个数组中只有两个数字是出现一次,其 ...

最新文章

  1. java 做计算器 百度云_用Java做一个简单的计算器
  2. Day04:函数参数、对象、嵌套、闭包函数和装饰器
  3. 怎么装python编译器_python编译器安装
  4. Spring4.x()---JdbcDaoSupport的使用
  5. 搭载MIUI for Watch,支持eSIM独立通话!小米手表首发1299元起
  6. 如何在centos7上安装FreeIPA的客户端
  7. Hashmasks将其艺术品与IPFS固定激励一起存储至Arweave中
  8. sap 中migo收货自动打印smartform_EWM MES/ERP集成 生产收货的几种方式
  9. 如何在linux安装gcc,如何在Linux安装gcc
  10. js微信抢红包脚本代码_微信抢红包插件示例代码及其实现原理
  11. ACM题目推荐(刘汝佳书上出现的一些题目)
  12. 使用linux宝塔面板安装 魔方IDC管理系统 免费
  13. 业务测试如何无缝转成测试开发?
  14. tampermonkey油猴实现自动定时刷新页面,刷访问量
  15. 用PS做一个简单的相机图标
  16. 数据库原理与应用学习笔记(一)
  17. 泛微oa明细表添加按钮_泛微OA系统表结构说明文档(20161121135308)
  18. 《人无信不立》你是一个有信用的人吗?
  19. Windows server 2019 网卡互联网检测服务
  20. 深入理解原子操作-底层基础

热门文章

  1. python中字符串添加r的作用,原始字符串不发生转义
  2. 玩转算法第七章-二叉树与递归
  3. 爬虫基本库request使用—爬取猫眼电影信息
  4. Even Three is Odd
  5. JavaScript基本概念(下)
  6. 20150321BC
  7. centos安装--两张光盘
  8. WPF and Silverlight 学习笔记(十二):WPF Panel内容模型、Decorator内容模型及其他...
  9. 牛客14355 翻硬币
  10. Leetcode--11. 盛水最多的容器