如何使用android xml制作动态表?

时间:2014-07-10 05:58:27

标签: android xml tablelayout

伙计我有一个XML文件包含TableLayout,如下所示:

    <ScrollView 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="10dp" >

    <TableLayout
        android:id="@+id/resulttable"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:weightSum="3" >

 </TableLayout>
</ScrollView>

这是另一个名为row.xml的布局,如下所示

<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/tr"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <TextView 
                android:id="@+id/tv_discription"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"/>

            <TextView 
                android:id="@+id/tv_left_vehicle"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"/>

            <TextView 
                android:id="@+id/tv_right_vehicle"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"/>

        </TableRow>

在上面的表中我想显示字符串的数组列表,为此我已经完成了以下代码:

        TableLayout table = (TableLayout) findViewById(R.id.resulttable);
        for(int i=0;i<DArray.size();i++)
        {

            LayoutInflater inflater = LayoutInflater.from(getApplicationContext());
            TableRow row = (TableRow) inflater.inflate(R.layout.row, table, false);

            String discription = DArray.get(i);
            String leftVehicle = LArray.get(i);
            String rightVehicle = RArray.get(i);

            TextView tvD = (TextView)row.findViewById(R.id.tv_discription);
            tvD.setText(discription);
            TextView tvlPrice = (TextView)row.findViewById(R.id.tv_left_vehicle);
            tvlPrice.setText(leftVehicle);
            TextView tvrPrice = (TextView)row.findViewById(R.id.tv_right_vehicle);
            tvrPrice.setText(rightVehicle);

            row.addView(tvD);
            row.addView(tvlPrice);
            row.addView(tvrPrice);
            table.addView(row);
        }

但此代码产生异常。这是我的代码的LogCat错误。

E/AndroidRuntime(1897): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

我是这种情况的初学者,请帮我找出问题所在。

更多细节我想制作一个这样的表:

enter image description here

1 个答案:

答案 0 :(得分:0)

好的第二个潜在问题也是:table.addView(row);

rowgets添加了每个循环迭代,但它是相同的视图。您只能将一次视图添加到层​​次结构中。您可能希望每个循环迭代都有一个新实例。我不能肯定地说,但这可能是问题所在。或尝试在viewgroup中添加索引位置,如table.addView(row,index);