Подтвердить что ты не робот

Как перебирать элементы представления

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

4b9b3361

Ответ 1

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

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;
}

Ответ 2

Чтобы применить метод 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);
        }
    }
} 

Ответ 3

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