有观察者监视Android视图

时间:2015-08-26 05:33:36

标签: android performance

如何在Android应用程序中监控多个视图。我之所以对此感兴趣的原因是,我的应用有一个视图,其中包含许多字段EditTexts, Spinners, CheckBoxes, RadioButtons,而某些EditTexts被隐藏,除非选择了特定的Spinner ItemRadio Button已经过检查。我希望观察者做的就是在启用提交 Button之前检查所有字段是否已填充,如果View 未隐藏它必须检查字段是否已被填充。这就是我要做的事情:我有四个布尔检查,检查四个隐藏的视图,但后来我不知道想写一个很长的 if / else 语句。感谢

1 个答案:

答案 0 :(得分:2)

以下代码将帮助您检查单个ViewGroup中包含的未知数量的不同类型的视图。在您只有四个观点的情况下,我认为您可能更喜欢四个'如果'条款。

您可以通过在布局文件中添加标记来标记要检查的所有视图:

 android:tag="CheckMe"

标签不必是唯一的,因此您可以对所有视图使用相同的标签。 除此之外,给包含您的视图的ViewGroup提供一个id(这可能是一个LinearLayout)

android:id="@+id/myLayout"

然后在您的活动中,您可以先获得ViewGroup

ViewGroup myLayout = (ViewGroup) findViewById(R.id.mylayout);

然后循环查看子视图:

for (int i = 0; i < myLayout.getChildCount(); i++)
{
    View v = myLayout.getChildAt(i); 
    if (v.getTag().toString().equals("CheckMe")
    {
         if (v instanceof EditText)
         { // do something
         }
         else if (v instanceof SomeOtherView)
         { // do something else
         }
    }
}