2013-08-05 64 views
6

我查看了TableLayouts和其他類似的東西的教程,但它似乎都被編程爲具有textview的靜態行數。我想知道是否可以創建一個簡單的數據表,包含3列和一組變量行,我可以在Java代碼中添加/刪除項目。如何在android中創建動態數據表?

基本上,有這樣的事情:

DATA DATA DATA 
row1 data data 
row2 data data 

,並從活動的Java類的對象數組填寫此表的數據。後來,如果我想添加另一個對象,它只會創建另一行。

舉例來說,如果我有這個在java中:

Class data{ 
    public data(String d1, String d2, String d3){ 
    data1=d1; 
    data2=d2; 
    data3=d3; 
} 
} 

,這在活動類:

Class activity{ 
data info[] = { 
new data("row1", "row1", "row1"), new data("row2","row2","row2"), 
new data("row3","row3","row3")}; 
} 
} 

而且我會用一個for循環將此項數據添加到表中該活動,無論我需要多少行以適合它。如果我添加ROW4的新對象,它只會增加另一行,並與結束:

row1 row1 row1 
row2 row2 row2 
row3 row3 row3 

我希望我一直沒太模糊了......在此先感謝,小夥子們! :)

+0

活計,你只需要數學的位,保留一個全部對象的集合,因爲數量增加要求一個新行添加一個新行。小數學方法應該足夠了。這是我沒有分享代碼作爲屬於別人。每當添加新行時,將表格佈局的高度增加到currentHeight *(float)(oldRwos +1)/(float)oldRows –

+0

[以編程方式創建TableLayout]的可能重複(https://stackoverflow.com/questions/1528988/create -tablelayout,編程) – cutiko

回答

20

我覺得很愚蠢,但我已經想通了我自己。

我只是在我的內部創建了一個,並通過for循環從0到myArray.Length()動態添加行。

巴姆:

TableLayout prices = (TableLayout)findViewById(R.id.prices); 
    prices.setStretchAllColumns(true); 
    prices.bringToFront(); 
    for(int i = 0; i < drug.length; i++){ 
     TableRow tr = new TableRow(this); 
     TextView c1 = new TextView(this); 
     c1.setText(drug[i].getName()); 
     TextView c2 = new TextView(this); 
     c2.setText(String.valueOf(drug[i].getPrice())); 
     TextView c3 = new TextView(this); 
     c3.setText(String.valueOf(drug[i].getAmount())); 
     tr.addView(c1); 
     tr.addView(c2); 
     tr.addView(c3); 
     prices.addView(tr); 
    } 

這是一個毒品戰爭風格的遊戲......試着開始在遊戲開發領域小。

但是......她工作,並且完全按照我的意願去做。現在我可以把它包裝成一個獨立的方法,並隨時更新它。如果我想添加一行,我只需添加一個數組條目。

想我會回答我自己的問題......大聲笑!

0

您也可以使用RecyclerView創建它。我認爲渲染速度會更快。你所要做的就是使用GridLayoutManager。每行的網格單元數是您的列數。 Header行可以實現爲一個不同的ViewHolder,它使用不同的UI,並且您需要處理的其餘數據是將其放入單維數組中。

1

如果您想擁有一個完全動態的表格,您可以使用ListViewRecyclerView或的表格視圖。

您的代碼將是這樣的:

String[][] myData = new String[][] { {"row1", "row1", "row1"}, 
            {"row2", "row2", "row2"}, 
            {"row3", "row3", "row3"} }; 

TableDataAdapter<String[]> myDataAdapter = 
     new SimpleTableDataAdapter(getContext(), myData); 
TableHeaderAdapter myHeaderAdapter = 
     new SimpleTableHeaderAdapter(getContext(), "Header1", "Header2", "Header3"); 

TableView<String[]> table = findViewById(R.id.table); 
table.setDataAdapter(myDataAdapter); 
table.setHeaderAdapter(myHeaderAdapter); 

因爲數據是在模型管理,你可以非常容易地更新表。

myDataAdapter.getData().add(new String[]{"row4", "row4", "row4"}); 
myDataAdapter.getData().add(new String[]{"row5", "row5", "row5"}); 
myDataAdapter.notifyDatasetChanged(); 

如表中提供了大量的定製和造型可能導致看起來是這樣的:(或完全不同)

enter image description here

最好的問候:)

0

您可以創建任意以編程方式從Java查看:TextView tv = new TextView(context);

所以你可以做到這一點的Table和他們的行和列。

一旦你東德創建它,你必須將它添加到您的佈局,你必須要找到根XML元素,然後添加到它:

Viewgroup root = findeViewById(R.id.root); root.addViews(programaticView);

相關問題