代码之家  ›  专栏  ›  技术社区  ›  Tivie

循环查看活动中的所有“小部件/元素”

  •  6
  • Tivie  · 技术社区  · 14 年前

    几天前我启动了自己的android应用程序,因为我需要一个移动应用程序来存储我在医院收集的一堆数据。

    我对Java和Android环境很陌生,虽然它看起来很容易理解,与C++非常类似。

    无论如何,我的应用程序有一堆“EditText”和单选按钮,我的问题是:

    如何遍历所有这些小部件(EditText和单选按钮)?

    在.NET中,您可以执行“容器中的每个元素”循环,但在Java/android环境中似乎找不到这样做的方法。

    注意:我不知道活动中有多少个“小部件”,因为有些是创建的,其他的则是未初始化的,有些则显示如果设置了一些用户首选项。

    任何帮助或暗示都将不胜感激。

    3 回复  |  直到 14 年前
        1
  •  5
  •   apps    14 年前
    for (int i = 0; i < rootView.getChildCount(); i++)
      rootView.getChildAt(i)
    

    注意,这将返回View-s,您必须在运行时检查当前查看的视图类型

        2
  •  1
  •   Tivie    14 年前

    它起作用了。

    对于视图类型(如微调器、单选按钮、编辑文本等),我们可以标记要在布局XML文件中解析的每种类型,然后添加条件,即:

       if (Widget_Tag != null){   
    
          View Current_Widget = (View) rootView.getChildAt(i);          
    
          String Widget_Tag = (String) Current_Widget.getTag();
    
          if (Widget_Tag.equals("MyEdiText")) {
    
            //do something
    
          }
       }
    

    if(Widget_标签!=null){是为了防止NullPointReferences。你也可以尝试一下。

        3
  •  1
  •   Vadim Zin4uk    13 年前

    您可以尝试以下代码:

    LayoutInflater inflater = getLayoutInflater();
    LinearLayout l = (LinearLayout) inflater.inflate(R.layout.main, null);
    
    ViewGroup Current_Widget = (ViewGroup)l.getRootView();
    
    for (int i = 0; i < Current_Widget.getChildCount(); i++)
        Current_Widget.getChildAt(i);