2015-08-26 1 views
2

Как контролировать несколько просмотров в приложении для Android. Причина, по которой я заинтересован в этом, является причиной, у моего приложения есть представление, которое имеет много полей EditTexts, Spinners, CheckBoxes, RadioButtons, а некоторые EditTexts скрыты, если не выбран конкретный Spinner Item или отмечен флаг Radio Button. Все, что я хочу, чтобы наблюдатель сделал, это проверить, все поля заполнены до отправитьButton включен, а если есть View был не скрыт он должен проверить, были ли поля заполнены. Вот где я зациклился на том, что мне делать: у меня есть 4 boolean чеки, которые проверяют для четырех скрытых Просмотров, но тогда я не хочу писать длинный if/else. СпасибоНаличие наблюдателя для мониторинга Android-просмотров

+0

Я использовал, если/иначе, если проверить все поля в моем приложении .. надеюсь, что вы нашли однорычажное все наблюдатель, как это будет полезно для других, включая меня, но я сомневайтесь, что-то подобное существует. –

+0

Да. Если/else - если бы это было сделано. И сделайте код объемным и просто любопытным –

ответ

2

Следующий код поможет вам проверить неизвестное количество видов разных типов, содержащихся в одной группе ViewGroup. В вашем случае с четырьмя видами, я думаю, вы, скорее всего, предпочтете четыре предложения «если».

Вы можете пометить все взгляды, которые вы хотите проверить, добавив тег в файле макета:

android:tag="CheckMe" 

Метки не должны быть уникальными, так что вы можете использовать один и тот же тег для всех соображений. В дополнение к этому, дают идентификатор в ViewGroup, содержащий ваши взгляды (это может быть 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 
     } 
    } 
} 
Смежные вопросы