2013-09-29 57 views
0

今天早上我花了相當多的錢試圖學習如何用同一行多次膨脹一個活動。我創建了一個名爲row per person的xml文件。行充氣機只添加行一次

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 

<TableRow 
    android:id="@+id/tableRow1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 

    <EditText 
     android:id="@+id/enterName" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:ems="10" 
     android:inputType="textPersonName" > 

     <requestFocus /> 
    </EditText> 

    <SeekBar 
     android:id="@+id/seekBar1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="2" /> 

    <TextView 
     android:id="@+id/tipPerPerson" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="$  " /> 
</TableRow> 

而且我的活動BILL_ENTRY_SCREEN,我進入了下面的代碼。

 rowPerPerson = (TableRow) findViewById(R.id.divideTips); 

    TableLayout table = (TableLayout)BILL_ENTRY_SCREEN.this.findViewById(R.id.table); 

    for(int i = 1; i <4; i++) { 
     LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     inflater.inflate(R.layout.row_per_person, table); 
    } 

然而,而不是行顯示了4倍,它只顯示一次。我究竟做錯了什麼。

回答

1

對於每個i,您必須爲TableRow視圖創建一個新實例,然後將其添加到TableLayout

所以,你的代碼應該是這樣的:

for(int i = 1; i <=4; i++) { 
    row = new TableRow(this); 
    LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    inflater.inflate(R.layout.row_per_person, table); 
    row.addView(inflater);  // add view to row 
    table.addView(row); // add to table 
} 
+0

我得到一個錯誤說膨脹不能被解析爲一個變量。我改變它inflater,但是當得到一個錯誤消息,它需要一個視圖 – Aaron

+0

@Aaron我編輯答案。請檢查它並讓我知道結果。 – mt0s