2015-01-13 3 views
0

поэтому я довольно новыми для развития Android, и у меня есть следующая ситуация:Android: Шаблонирование с XML

<LinearLayout 
    android:id="@id/child_1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 

    <TextView 
     android:layout_weight="1" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:text=""> 

    <Button 
     android:layout_weight="1" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:text=""> 
</LinearLayout> 

Проблема заключается в том, что я должен повторить эту Horizontal LinearLayout неизвестное количество раз , динамически добавляя текстовые поля TextView и Button для каждого нового экземпляра. Каждый новый экземпляр Горизонтальный LinearLayout должен быть добавлен в существующий Вертикальный LinearLayout.

Так начальная вертикальная LinearLayout:

<LinearLayout 
    android:id="@id/parent" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

</LinearLayout> 

Затем на основе динамической реализации:

<LinearLayout 
    android:id="@id/parent" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <LinearLayout 
     android:id="@id/child_1">   
    </LinearLayout> 

    <LinearLayout 
     android:id="@id/child_2">   
    </LinearLayout> 

</LinearLayout> 

Есть ли способ, что это может быть сделано, как я описал? Элементы XML, которые я использовал в примере, являются базовым. Я фактически использую атрибуты стиля, связанные с ними, поэтому я просто хотел бы создать первый Горизонтальный LinearLayout в XML, затем программным образом получить к нему доступ, добавить необходимые поля, а затем установить его как дочерний элемент Вертикальный LinearLayout ,

+0

Используйте [Список просмотра] (http://developer.android.com/guide/topics/ui/layout/listview .html). Вы можете настроить внешний вид каждой строки в соответствии с вашими потребностями. – Hemanth

ответ

0

Динамически можно создать дочерние элементы и добавить их в родительский вертикальный LinearLayout. Пожалуйста, проверьте следующий код: Я использовал TextView и Spinner для каждой созданной строки:

//--- Row Layout --- 
    LinearLayout rowLayout = null; 
    LinearLayout.LayoutParams rowLayoutparams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 

    /** Create the TextViews and Spinners */ 
    for (int j=0; j<gameArray.length; j++) { 
     //Create new row 
     rowLayout = new LinearLayout(getActivity().getApplicationContext()); 
     rowLayout.setLayoutParams(rowLayoutparams); 
     rowLayout.setGravity(Gravity.CENTER_HORIZONTAL); 

     //--- TEXT VIEW --- 
     TextView myTextView = new TextView(getActivity().getApplicationContext()); 
     myTextView.setId(j); 
     myTextView.setText("CONTENT"); 
     myTextView.setGravity(Gravity.CENTER); 

     //--- SPINNER --- 
     spinnersArray[j] = new Spinner(getActivity().getApplicationContext()); 
     spinnersArray[j].setId(j+100); //set a different ID 
     //Populate the spinner here ... 

     //--- LAYOUT PARAMS --- 
     LinearLayout.LayoutParams itemParams = new LinearLayout.LayoutParams(100, 100);  //first and last item 
     //edit the item params here ... 

     //Add the params to the Views 
     myTextView.setLayoutParams(itemParams); 
     spinnersArray[j].setLayoutParams(itemParams); 

     //--- Add the view to the Layout --- 
     rowLayout.addView(myTextView); 
     rowLayout.addView(spinnersArray[j]); 

     //--- Add the row to the layout only if (NOT even) OR the chars are finished ---   
     ((LinearLayout)getView().findViewById(R.id.parent)).addView(rowLayout); 
    } 
Смежные вопросы