Как перебирать элементы представления - PullRequest
59 голосов
/ 26 января 2011

У меня есть вид с радио, входами и кнопкой, и когда я нажимаю на нее, я хочу проверить, что все входы содержат информацию.Как я могу пройтись по элементам представления в упражнении и проверить, соответствует ли каждое текстовое представление вышеупомянутому требованию?Спасибо.

Ответы [ 3 ]

118 голосов
/ 27 января 2011

Я сделал нечто похожее в коде, которого у меня сейчас нет, но по памяти это должно быть примерно так (при условии родительского представления LinearLayout с идентификатором "layout"):

LinearLayout layout = (LinearLayout)findViewById(R.id.layout);
boolean success = formIsValid(layout);

public boolean formIsValid(LinearLayout layout) {
    for (int i = 0; i < layout.getChildCount(); i++) {
        View v = layout.getChildAt(i);
        if (v instanceof EditText) {
            //validate your EditText here
        } else if (v instanceof RadioButton) {
            //validate RadioButton
        } //etc. If it fails anywhere, just return false.
    }
    return true;
}
18 голосов
/ 18 июня 2016

Чтобы рекурсивно применить метод kcoppock, вы можете изменить его на:

private void loopViews(ViewGroup view) {
    for (int i = 0; i < view.getChildCount(); i++) {
        View v = view.getChildAt(i);

        if (v instanceof EditText) {
            // Do something

        } else if (v instanceof ViewGroup) {

            this.loopViews((ViewGroup) v);
        }
    }
} 
0 голосов
/ 27 января 2011

Ваш onClickListener поставляет объект View v;используйте View rV = v.getRootView(), чтобы позиционировать себя в форме.Затем используйте rV.findViewWithTag( ... ) или rV.findViewByID(R.id. ... ), чтобы найти элементы формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...