需要帮助让我的Android TableLayout正常工作

时间:2015-11-05 18:11:28

标签: android

我正在尝试在Android UI中的表格中显示来自板载SQLite数据库的数据,但它无法正常工作。这就是我所拥有的:

activity_main.xml中

<TableLayout
    android:id="@+id/data_table"
    android:stretchColumns="3"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TableRow>
        <TextView android:layout_column="1" android:text="id" android:layout_width="0dp" android:layout_weight="1" />
        <TextView android:layout_column="2" android:text="firstname" android:layout_width="0dp" android:layout_weight="1" />
        <TextView android:layout_column="3" android:text="lastname" android:layout_width="0dp" android:layout_weight="1" />
    </TableRow>
</TableLayout>

MainActivity.java

List<People> listOfPeople = databaseHelper.getAllPeople();

TableLayout myTableLayout = (TableLayout) findViewById(R.id.data_table);

for(People person : listOfPeople){
    TableRow newTableRow = new TableRow(this);
    TableRow.LayoutParams rowParams = new TableRow.LayoutParams();
    newTableRow.setLayoutParams(rowParams);

    TextView idTV = new TextView(this);
    idTV.setLayoutParams(new TableRow.LayoutParams(1));
    idTV.setText(person.getId());

    TextView firstnameTV = new TextView(this);
    firstnameTV.setLayoutParams(new TableRow.LayoutParams(2));
    firstnameTV.setText(person.getFirstname());

    TextView lastnameTV = new TextView(this);
    lastnameTV.setLayoutParams(new TableRow.LayoutParams(3));
    lastnameTV.setText(person.getLastname());

    newTableRow.addView(idTV);
    newTableRow.addView(firstnameTV);
    newTableRow.addView(lastnameTV);

    myTableLayout.addView(newTableRow);
}

显示表和数据,但是我从数据库构建的行中的数据全部被一起扫描并且不可读。如果我将其与Web开发进行比较,看起来所有数据都在表行的一个单元格中。

我是Android开发人员(以前的JSP开发人员)的新手,我在这里,我试图拼凑谷歌搜索。我需要使用TableLayout,因此网格布局(或任何其他布局)不会这样做。

修改

我为我的“细胞”添加了一些背景颜色,发现它们位于不同的细胞中。显然,问题是他们没有正确分发自己,因为我不确定如何在Java中的单元格中添加“layout_width”和“layout_weight”。至少,我猜这就是问题所在。

1 个答案:

答案 0 :(得分:0)

只需将您的xml更改为:

<TableLayout
android:id="@+id/data_table" android:stretchColumns="1"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TableRow>
    <TextView android:layout_column="1" android:layout_weight="1" android:text="id" />
    <TextView android:layout_column="2" android:layout_weight="1" android:text="firstname" />
    <TextView android:layout_column="3" android:layout_weight="1" android:text="lastname" />
</TableRow>

对于java代码添加的所有TextView,确保将layout_weight设置为1。