面试题如题:

咱们老套路先上图:下面是我通过遍历拿到的所有的id,怎么做的呢?

咱们先说下思路:

首先拿到最外层的ViewGroup然后通过它拿到它所有的child然后循环每个child判断是ViewGroup还是View,如果是ViewGroup就继续遍历(递归),不是VieGroup的话那就是View了,那就直接打印View的id即可。

看代码吧。

 //遍历树形结构viewViewGroup llRoot = findViewById(R.id.ll_root);forData(llRoot);/*** 遍历ViewGroup的方法** @param llRoot 根VieGroup*/private void forData(ViewGroup llRoot) {int childCount = llRoot.getChildCount();for (int i = 0; i < childCount; i++) {if (llRoot.getChildAt(i) instanceof ViewGroup) {Log.e("打印ViewGroup的id", llRoot.getChildAt(i).getId() + "=");forData((ViewGroup) llRoot.getChildAt(i));} else {Log.e("打印View的id", llRoot.getChildAt(i).getId() + "=");}}}

咱们再看下xml布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/ll_root"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><EditTextandroid:id="@+id/et_input"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:inputType="text"android:text="408" /><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:onClick="showResult"android:text="通过MVP模式显示结果" /><LinearLayoutandroid:id="@+id/ll_two"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><LinearLayoutandroid:id="@+id/tw_three"android:layout_width="match_parent"android:layout_height="wrap_content"><TextViewandroid:id="@+id/tv_one"android:layout_width="wrap_content"android:layout_height="wrap_content" /><TextViewandroid:id="@+id/tv_two"android:layout_width="wrap_content"android:layout_height="wrap_content" /></LinearLayout><TextViewandroid:id="@+id/tv_three"android:layout_width="wrap_content"android:layout_height="wrap_content" /></LinearLayout><ScrollViewandroid:id="@+id/sv_four"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/tv_shoe_result"android:layout_width="match_parent"android:layout_height="wrap_content"android:textColor="@android:color/black" /></ScrollView></LinearLayout>

懂了吧。

Android开发面试题之遍历ViewGroup拿到所有的ViewGroup和View的id相关推荐

  1. android开发面试题!微信小程序趋势及前景,社招面试心得

    没有稳定的工作,只有稳定的能力. 又到了万物复苏的季节,在程序猿这个行当里,作为 Android 开发出生的,在经历了八年的脱发生涯后,有了越来越多的想法和感触 趋势 随着各类移动跨平台的兴起,在 R ...

  2. 71道Android开发面试题

    注:本文来自"安卓巴士" Android面试题 1.        下列哪些语句关于内存回收的说明是正确的? (b ) A. 程序员必须创建一个线程来释放内存   B. 内存回收程 ...

  3. Android开发面试题 71道经典题目

    注:本文来自"安卓巴士" Android面试题 1.        下列哪些语句关于内存回收的说明是正确的? (b ) A. 程序员必须创建一个线程来释放内存   B. 内存回收程 ...

  4. 百度Android开发面试题

    此文转载,希望朋友有好的面试题 发来研究一下-- 1. Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念 DVM指dalivk的虚拟机.每一个Android应用程序都在 ...

  5. 优秀Android程序员必知必会的网络基础,Android开发面试题及答案

    前言 大家应该看过不少人分享的面试成功的面经,是不是觉得自己"说不定也可以"呢? 这里重提一个理论:幸存者偏差.当取得资讯的渠道,仅来自于幸存者时(因为死人不会说话),此资讯可能会 ...

  6. android开发面试题!360°深入了解Flutter,面试总结

    何为成长?成长是指自我提升,一方面是本身的个人能力,另一方面是社会对你的认可度.最终,程序员的职位和薪水都能在成长中得以体现. 很多人对成长有误解,在他们眼中,随着工作年限的提高,成长是理所当然的事情 ...

  7. android开发面试题

    找了将近两个星期的工作,面试了5家公司,罗列一下笔试或者面试时的问题,祝大家好运 1,handler机制 答:handler运行机制:1),在主线程中创建handler 2),子线程中借助主线程的ha ...

  8. 携程android开发面试题,2017携程笔试题目

    携程是我国著名的旅游为主的网站,想进入携程工作吗?小编为大家整理了2017携程笔试题目,欢迎阅读参考! 2017携程Web前端实习生招聘笔试题 考察encodeURI encodeURI(), dec ...

  9. Android开发面试题之求一个数的N次幂手写算法

    实际上很多人第一反应就是循环,但是不用循环呢?这里我这边想到了递归的方法,分别为Java版本和Kotlin版本的代码: Java版本: /*** 思路:利用递归实现* Java 版本:计算一个数的n次 ...

最新文章

  1. OPENGL ES 对象的拾取
  2. 查看PID 进程是否存在的一个小技巧
  3. 推荐系统个人理解(理论部分)
  4. Win32 像素格式描述符学习
  5. c#如何跳出一个函数_C#初学者教程系列9:类和对象
  6. 使用Kubernetes容器服务在云上搭建AI推理环境
  7. python2与python3,Python2和Python3的10大区别
  8. OPPO Reno3系列旗舰官宣:骁龙765G+正反双曲面设计
  9. 来学习一下概率论基本知识,它能让防止你的模型过拟合
  10. 创建Maven分布式前台系统架构,写出京动态导航,跨域返Json数据
  11. vmlinuz的产生
  12. activiti6监听器使用
  13. python在线编辑器编译excel_如何利用ONLYOFFICE将在线文档编辑器集成到Python Web应用程序中?...
  14. 万兆铜缆--七类双绞线--光纤等内容
  15. AAAI 2020对抗样本论文
  16. 修复 Apple “连续互通” 方法汇总:修复 AirDrop(隔空投送),修复 Apple Watch 解锁 Mac,修复 HandOff(接力)等
  17. 大数据在城市规划领域的应用思考
  18. Linux应用(二)多进程编程
  19. 微信小程序 - 分享商品海报
  20. 中e管家投资理财做好这六件事

热门文章

  1. java bitset 扩展_将java BitSet保存到DB
  2. java进阶 2018_Java Web基础入门2018版
  3. python的类作用_python——类中的self到底的作用及三个应用场景
  4. 【原】postman常用设置全局变量的js片段
  5. WUSTOJ 1282: Start(Java)
  6. ROS-URDF仿真
  7. VS2010/MFC编程入门之二十(常用控件:静态文本框)
  8. map和list遍历基础
  9. css--左右visibility建立 “collapse”值问题
  10. Win7下提取加密PDF文件(pdf加密成exe)