如何dynamic添加行到表格布局

我有一些sqllite的数据,每更新一次,我点击保存button,我想显示数据到一个表格布局,为更新的数据添加更多的行。我有一定的代码,但它只显示更新的数据replace之前数据,我想添加更多的行数据更新。 我知道这只是添加一行到表格布局,但我怎么能添加更多的行。

TableLayout tl=(TableLayout)findViewById(R.id.maintable); TableRow tr1 = new TableRow(this); tr1.setLayoutParams(new LayoutParams( LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); TextView textview = new TextView(this); textview.setText(data); //textview.getTextColors(R.color.) textview.setTextColor(Color.YELLOW); tr1.addView(textview); tl.addView(tr1, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 

在表格布局中添加行的方式可以将多个TableRow实例添加到您的tableLayout对象中

 tl.addView(row1); tl.addView(row2); 

等等…

这里有一些技巧,我经过了一些试验和错误之后才想出来的,它可以让你保留你的XML风格,避免使用<merge/> (比如,inflate()需要合并才能连接到root,并返回根节点) 。 不需要运行时new TableRow()new TextView()

 TableLayout table = (TableLayout)CheckBalanceActivity.this.findViewById(R.id.attrib_table); for(ResourceBalance b : xmlDoc.balance_info) { // Inflate your row "template" and fill out the fields. TableRow row = (TableRow)LayoutInflater.from(CheckBalanceActivity.this).inflate(R.layout.attrib_row, null); ((TextView)row.findViewById(R.id.attrib_name)).setText(b.NAME); ((TextView)row.findViewById(R.id.attrib_value)).setText(b.VALUE); table.addView(row); } table.requestLayout(); // Not sure if this is needed. 

attrib_row.xml

 <?xml version="1.0" encoding="utf-8"?> <TableRow style="@style/PlanAttribute" xmlns:android="http://schemas.android.com/apk/res/android"> <TextView style="@style/PlanAttributeText" android:id="@+id/attrib_name" android:textStyle="bold"/> <TextView style="@style/PlanAttributeText" android:id="@+id/attrib_value" android:gravity="right" android:textStyle="normal"/> </TableRow> 

使用带有CursorAdapter (或SimpleCursorAdapter )的ListView可能会更好。

这些都是为了显示sqlite数据库中的行而创build的,并允许用最less的编程进行刷新。

编辑 – 这是一个涉及SimpleCursorAdapter和ListView的教程 ,包括示例代码。

你做得对; 每次需要添加一行时,只需新build一个TableRow()等等。然而,从XML扩充新行可能会更容易。

解决方法1.将你的TableLayout tl设置为类成员variables,只调用TableLayout tl=(TableLayout)findViewById(R.id.maintable); 当你开始上课的时候 点击button直接使用tl,例如。 tl.addView(row),不要再调用FindViewById了。 所以下一个新行不会取代以前的新行。

解决scheme2.每次点击button后,将更新的数据保存到数组中,然后通过数组循环重新呈现整个表格布局。

尝试
new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));

代替

new LayoutParams( LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));