2013-04-17 57 views
0

我在想,如果我可以添加數據的動態行的表,其佈局已經定義...爲前:動態添加行的表,在佈局設計

<TableLayout 
     android:id="@+id/myTableOrders" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="10sp"> 

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

       <TextView android:id="@+id/name" 
        android:textSize="14sp" 
        android:textStyle="bold" 
        android:layout_marginLeft="10sp" 
        android:layout_marginTop="5sp" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="0.6"    
       />          

       <TextView android:id="@+id/quantity" 
        android:textSize="14sp" 
        android:textStyle="bold" 
        android:layout_marginTop="5sp" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="0.2" 
       /> 

       <TextView android:id="@+id/total_price" 
        android:textSize="14sp" 
        android:textStyle="bold" 
        android:layout_marginTop="5sp" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="0.2" 
       /> 
      </TableRow> 
</TableLayout> 

考慮這個表,其中每行都有3個文本瀏覽,這個樣式...我現在可以給每個文本瀏覽提供數據嗎?或者我也應該在處理總體的Java代碼中編寫樣式?

如果yes..maybe你可以給我一個提示:)

編輯:這編程方式使用以下

TableLayout ordersTable = (TableLayout)findViewById(R.id.myTableOrders); 
    for (int i=0;i<products.size();i++){ 

     //Create a new row to be added. 
     TableRow tr = new TableRow(this); 
     tr.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT)); 

     //Create text views to be added to the row. 
     TextView name = new TextView(this); 
     name.setText(products.get(i).getName()); 
     name.setTextSize(16); 
     name.setTypeface(Typeface.DEFAULT_BOLD); 
     TableRow.LayoutParams nameParams = new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT, 0.6f); 
     nameParams.setMargins(7, 5, 0, 0); 

     TextView quantity = new TextView(this); 
     quantity.setText(products.get(i).getQuantityString()); 
     quantity.setTextSize(16); 
     quantity.setTypeface(Typeface.DEFAULT_BOLD); 
     TableRow.LayoutParams quantityParams = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT, 0.2f); 
     quantityParams.setMargins(0, 5, 0, 0); 

     TextView totalPrice = new TextView(this); 
     totalPrice.setTextSize(16); 
     totalPrice.setTypeface(Typeface.DEFAULT_BOLD); 
     TableRow.LayoutParams totalPriceParams = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT, 0.2f); 
     totalPriceParams.setMargins(0, 5, 0, 0); 

     tr.addView(name,nameParams); 
     tr.addView(quantity,quantityParams); 
     tr.addView(totalPrice,totalPriceParams); 

     ordersTable.addView(tr); 
+0

將數據提供給textViews意味着什麼?你的意思是爲每個人設置文字嗎? –

+0

是的......我的意思是我不想搜索和編寫邊緣,重量,顏色等的java代碼......如果可能的話 – Teshte

+0

如果您只是想爲這些已定義的TextViews設置文本,請在java代碼,你可以使用'setText(「text」)' –

回答

0

的代碼在你的活動解決了,使用類似

TextView tv = (TextView) findViewById(R.id.name); //do this for all text views : retrieve them using Ids. 
    tv.setText("someText") //someText = text that you want to set 
+0

這應該是R.id.name而不是R.id. @ + ID /名稱' – Squonk

+1

感謝您指出:),我的壞! –

+0

恐怕沒有用......我認爲這些ID必須是獨一無二的? – Teshte