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