Разработка Android: как получить все EditText дочерние элементы ViewGroup? - PullRequest
2 голосов
/ 12 апреля 2011

По сути, у меня есть LinearLayout, который содержит случайное количество горизонтальных LinearLayouts, и в каждом из горизонтальных LinearLayout есть TextView и EditText. Я хочу, чтобы иметь возможность получить значение каждого дочернего элемента EditText мастера LinearLayout.

Извините, если это сбивает с толку, я ничего не могу объяснить!

Могу ли я просто установить один и тот же идентификатор для каждого из EditTexts, а затем использовать findViewById, или это будет возвращать только первый экземпляр EditText?

Спасибо, Алекс.

Ответы [ 3 ]

6 голосов
/ 05 июня 2012
 LinearLayout ll = //Your Layout this can be any Linear or Relative layout 
                     //in which you added your spinners at runtime ;

    int count = ll.getChildCount();
    for(int i =0;i<count;i++)
    {
        View v = ll.getChildAt(i);
        if(v instanceof Spinner)
        {
            // you got the spinner
            EditText s = (EditText) v;
            Log.i("Item selected",s.getText().toString());
        }
    }
2 голосов
/ 12 апреля 2011

findViewById возвращает только первое представление с заданным идентификатором.Вам придется самостоятельно обходить иерархию представлений, по крайней мере, до тех пор, пока не дойдете до каждого горизонтального линейного макета.Для этого вы найдете методы ViewGroup.getChildCount() и ViewGroup.getChildAt(int).

1 голос
/ 12 апреля 2011

Вам нужно будет вызвать findViewById для каждого из LinearLayouts. Если вы сделаете это, вы можете установить один и тот же идентификатор для каждого EditText.

...