Получение дочерних элементов из LinearLayout

Есть ли способ получить дочерний элемент LinearLayout? Мой код возвращает представление (linearlayout), но мне нужно получить доступ к определенным элементам внутри макета.

Какие-либо предложения?

(Да, я знаю, что могу использовать findViewById, но я создаю макеты / дочерние элементы в java, а не XML.)

Solutions Collecting From Web of "Получение дочерних элементов из LinearLayout"

Вы всегда можете сделать что-то вроде этого:

LinearLayout layout = setupLayout(); int count = layout.getChildCount(); View v = null; for(int i=0; i<count; i++) { v = layout.getChildAt(i); //do something with your child element } 

Я думаю, что это может помочь: findViewWithTag ()

Установите TAG для каждого вида, который вы добавляете в макет, и затем получите этот вид по TAG, как вы бы это сделали, используя ID

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

Вы можете это сделать.

 ViewGroup layoutCont= (ViewGroup) findViewById(R.id.linearLayout); getAllChildElements(layoutCont); public static final void getAllChildElements(ViewGroup layoutCont) { if (layoutCont == null) return; final int mCount = layoutCont.getChildCount(); // Loop through all of the children. for (int i = 0; i < mCount; ++i) { final View mChild = layoutCont.getChildAt(i); if (mChild instanceof ViewGroup) { // Recursively attempt another ViewGroup. setAppFont((ViewGroup) mChild, mFont); } else { // Set the font if it is a TextView. } } } 
 LinearLayout layout = (LinearLayout)findViewById([whatever]); for(int i=0;i<layout.getChildCount();i++) { Button b = (Button)layout.getChildAt(i) } 

Если это все кнопки, в противном случае они отображаются для просмотра и проверки класса

 View v = (View)layout.getChildAt(i); if (v instanceof Button) { Button b = (Button) v; }