2015-02-23 90 views
0

我有一個3列的表格佈局,我有3個字符串數組。我希望每個列都有來自字符串數組的每個單元格的textview。 到目前爲止我的代碼:用textviews表格佈局

TableLayout prices = (TableLayout)findViewById(R.id.table); 
    prices.setStretchAllColumns(true); 
    prices.bringToFront(); 
    table = getResources().getStringArray(R.array.table); 
    for(int i = 0; i < table.length; i++){ 
     TableRow tr = new TableRow(this); 
     TextView c1 = new TextView(this); 
     c1.setText(table[i]); 
     TextView c2 = new TextView(this); 
     c2.setText (table[i]); 
     TextView c3 = new TextView(this); 
     c3.setText(table[i]); 
     tr.addView(c1); 
     tr.addView(c2); 
     tr.addView(c3); 
     prices.addView(tr); 

它看起來像這樣:

enter image description here

我的字符串數組:

<string-array name="column1"> 
    <item >5</item> 
    <item >7</item> 
    <item >10</item> 
    <item >18</item> 
</string-array> 
<string-array name="column2"> 
    <item >10, 20</item> 
    <item >15, 13</item> 
    <item >53, 65</item> 
    <item >58, 32</item> 
</string-array> 
<string-array name="column3"> 
    <item >10, 44</item> 
    <item >25, 01</item> 
    <item >30, 32</item> 
    <item >43, 12</item> 
</string-array> 

我想從右邊字符串數組每列顯示的數字。我怎樣才能做到這一點?

在此先感謝。

+0

我真的不知道你的問題是什麼。但是你可以把你的數據放在一個多維數組中,並將你的當前循環放在第二個循環中遍歷行和列。這是你的意思嗎?如果您需要更多幫助,請提供更多信息。格爾茨。 – 2015-02-23 21:06:06

+0

你想在表格中存儲什麼值? – Apurva 2015-02-23 21:41:05

+0

請參閱編輯。 – 2015-02-24 05:16:36

回答

0

那麼迭代,最後我設法使它:

TableLayout prices = (TableLayout)findViewById(R.id.table); 
    String[] column1 = getResources().getStringArray(R.array.column1); 
    String[] column2 = getResources().getStringArray(R.array.column2); 
    String[] column3 = getResources().getStringArray(R.array.column3); 
    prices.setStretchAllColumns(true); 
    prices.bringToFront(); 
    for(int i = 0; i < column1.length; i++){ 
     TableRow tr = new TableRow(this); 
     TextView c1 = new TextView(this); 
     c1.setText(column1[i]); 
     TextView c2 = new TextView(this); 
     c2.setText(column2[i]); 
     TextView c3 = new TextView(this); 
     c3.setText(column3[i]); 
     tr.addView(c1); 
     tr.addView(c2); 
     tr.addView(c3); 
     prices.addView(tr); 
    } 

感謝所有幫助。

0

這取決於您的數據以及要如何呈現它。如果你的數據數組只是1d,而且看起來像是這樣,你只需要添加一個for循環來查看更多的單元格。

for(int i = 0; i < rows; i++){ 
    TableRow tr = new TableRow(this); 
    for (int j=0; j<columns; j++ { 
     TextView c1 = new TextView(this); 
     c1.setText(table[i+j]); 
     tr.addView(c1); 
    } 
    prices.addView(tr); 
} 

或類似的東西。這將一次一行地填充「表」的單元格。所以這取決於你的數據組織/格式。此外,您需要設置列和行的大小,當然,如果數據集不是全行*列條目數,則檢查是否爲空值。

+0

這不是一個完美的答案。如果他不想在每個單元中存儲「i + j」的值? – Apurva 2015-02-23 21:39:45

+0

你設置了兩個循環,沒關係。但是你輸入價值的方式是錯誤的。 OP沒有說他想在表格中存儲什麼確切的數值。所以不能在單元格中存儲i或j或i + j的值 – Apurva 2015-02-23 21:49:58

+0

@Apurva我很抱歉,我不瞭解你。從OP的前4個數據條目看,它看起來像字符串或分組序列格式的數字。我是根據我有什麼信息來回答的。也就是說,我寫的代碼沒有存儲「i + j在每個單元中的值」。你可以清楚地看到它是'table [i + j]'的值。所以,假設我們仍然使用3列,第一行將是'5,7,10',第二行以'18,...'開始。我沒有看到問題,除非我沒有用tabel.length檢查來充實代碼。 – 2015-02-23 22:34:40

0

您的代碼爲同一行中的所有3個文字視圖添加了相同的i值。這更多的是寫你的for循環的變體而不是你當前的循環..試試這個。

table = getResources().getStringArray(R.array.table); 
     String[][] tableData=new String [][]{getResources().getStringArray(R.array.column1), 
getResources().getStringArray(R.array.column2),getResources().getStringArray(R.array.column3) 
    } 
     for(int i = 0; i < tableData[0].length; i++){ 
      TableRow tr = new TableRow(this); 
     for (int j=0;j<tableData.length;j++){    
      TextView c1 = new TextView(this);  
      c1.setText(tableData[j][i]); 
      tr.addView(c1); 
      } 
      prices.addView(tr); 
     } 

因此應該給你在每列中的不同值。只是改變for循環來實現你想要的。你明智地填充數據行。記住這一點,同時通過陣列

+0

沒有你的答案**錯**。你的輸出將是** Row1 **'0 | 1 | 2 ** ** Row2 **'0 | 1 | 2 ** ** Row3 **'0 | 1 | 2'即所有列將具有相同的值。 – Apurva 2015-02-23 21:37:44

+0

現在呢? – Droidekas 2015-02-23 21:43:27

+0

這將對OP有相同的效果,並且你的內部for循環將無用 – Apurva 2015-02-23 21:47:33