Arjit
Arjit

Reputation: 565

table layout row has sub table added programmatically

I am trying to programmatically add a row to a table which is defined in XML (this row has internal table in it).

<TableLayout android:id="@+id/maintable"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:stretchColumns="*" xmlns:android="http://schemas.android.com/apk/res/android">
    <TableRow android:id="@+id/tabrow">
        <TableLayout android:id="@+id/tableLayout1"
            android:layout_width="fill_parent" android:layout_height="fill_parent"
            xmlns:android="http://schemas.android.com/apk/res/android">
            <TableRow>
                <TextView android:id="@+id/titlerow" android:layout_height="fill_parent" android:text="Hello world"
                    android:gravity="center" android:layout_width="fill_parent"
                    android:layout_weight="1" android:textSize="17sp"></TextView>
            </TableRow>
            <TableRow>
                <LinearLayout android:orientation="horizontal" 
                    android:layout_width="fill_parent" android:layout_height="fill_parent"
                    android:layout_weight="1">
                    <TextView android:text="@string/time1" android:id="@+id/time1" style="@style/timeview"></TextView>
                    <TextView android:text="@string/time2" style="@style/dayview"></TextView>
                    <TextView android:text="@string/time3" style="@style/dayview"></TextView>

                </LinearLayout>
            </TableRow>

        </TableLayout>

    </TableRow>

Now I want to just add this(tabrow) row many times in the table.

How can I do it ?

Upvotes: 2

Views: 614

Answers (1)

DonGru
DonGru

Reputation: 13710

something like this should do:

// get your table layout
TableLayout tl = (TableLayout) findViewById(R.id.WhateverYoursIs);

// Create new row
TableRow tr = new TableRow(this);
tr.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT));

// Create textview
TextView t = new TextView(this);
//
// configure your textview's and do this 2 more times  
//

t.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT));

// add textview to row
tr.addView(t);
//
// do this 2 more times  
//

// add row to table
tl.addView(tr, new TableLayout.LayoutParams(TableLayout.LayoutParams.FILL_PARENT, TableLayout.LayoutParams.WRAP_CONTENT));

you just have to put the row-creation-stuff in a loop depending on how often you need it

Upvotes: 2

Related Questions