我在sqllite中有一些数据并且每次都会更新,我点击“保存”按钮,我想将数据显示到表格布局中,以便为更新的数据添加更多行。
我有一些代码,但它只显示替换以前数据的更新数据,我希望在更新数据时添加更多行。
我知道这只是在表格布局中添加一行但是如何添加更多行?
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));
答案 0 :(得分:90)
这是我在经过一些试验和错误之后想出的技术,它允许您保留XML样式并避免使用<merge/>
的问题(即inflate()需要合并附加到root,并返回根节点)。无需运行时new TableRow()
或new TextView()
。
<强>代码强>
注意:此处CheckBalanceActivity
是一些示例Activity
类
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>
答案 1 :(得分:23)
您在表格布局中添加行的方式可以将多个TableRow
个实例添加到tableLayout
对象
tl.addView(row1);
tl.addView(row2);
等...
答案 2 :(得分:3)
您最好使用ListView CursorAdapter(或SimpleCursorAdapter)。
这些内容用于显示sqlite数据库中的行,并允许您使用最少的编程进行刷新。
修改 - 这是一个tutorial,涉及SimpleCursorAdapter和ListView,包括示例代码。
答案 3 :(得分:2)
你做对了;每次您需要添加一行时,只需添加一行TableRow()
等等。尽管inflate
可能更容易XML
新行。
答案 4 :(得分:0)
解决方案1.将TableLayout tl设置为类成员变量,仅在启动类时调用TableLayout tl=(TableLayout)findViewById(R.id.maintable);
。单击按钮时直接使用tl,例如。 tl.addView(行),不再调用FindViewById。所以下一个新行不会取代之前的新行。
解决方案2.每次按下按钮后,将更新的数据保存到数组中,然后循环遍历数组,重新渲染整个表格布局。