Reputation: 63
I am trying to add table rows to a table layout with the values fetched from DB. so, the table rows will be added dynamically. I want a nice layout with 2 columns and the text in each center aligned. I am using below code. but it does not work. Can anybody please help.
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/display_table" >
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="1dp"
>
<TextView android:background="@drawable/cell_shape"
android:textAppearance="?android:attr/textAppearanceMedium"
android:gravity="center"
android:text=""/>
<TextView android:background="@drawable/cell_shape"
android:textAppearance="?android:attr/textAppearanceMedium" android:text=""
android:gravity="center"/>
</TableRow>
</TableLayout>
and I am adding the rows to the layout as below.
private void addHeaderRow(TableLayout tl){
TableRow tr = new TableRow(this);
tr.setPadding(1, 1, 1, 1);
tr.setLayoutParams(new LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
/* Create a Button to be the row-content. */
TextView text1 = new TextView(this);
TextView text2 = new TextView(this);
text1.setText(in.toUpperCase());
text2.setText(out.toUpperCase());
text1.setGravity(Gravity.LEFT);
text2.setGravity(Gravity.CENTER);
tr.addView(text1);
tr.addView(text2);
/* Add row to TableLayout. */
tl.addView(tr,new TableLayout.LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
}
Upvotes: 0
Views: 3312
Reputation: 469
Put Table Layout in Scroll View in XML because you wouldn't know the count of rows to display..
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TableLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/display_table" >
</TableLayout>
</ScrollView>
Now your java code :
class SomeTableLayout extends Activity{
private TableLayout tableLayout = null;
private TableLayout.LayoutParams params= null;
void onCreate(){
tableLayout = (TableLayout)findViewById(R.id.display_table);
addHeaderRow();
}
private void addHeaderRow(){
tableLayout.removeAllViews();
for(int i = 0; i < cursor.length(); i++){
TableRow tr = new TableRow(this);
tr.setPadding(1, 1, 1, 1);
tr.setId(i + 1);
tr.setOnclickLinstener(new onClickListener(){
// do some datanse operation on click of row.
});
params = new TableLayout.LayoutParams(TableLayout.LayoutParams.fillParent,
TableLayout.LayoutParams.wrapContent);
/* Create a Button to be the row-content. */
TextView text1 = new TextView(this);
TextView text2 = new TextView(this);
text1.setText(in.toUpperCase());
text2.setText(out.toUpperCase());
text1.setGravity(Gravity.LEFT);
text2.setGravity(Gravity.CENTER);
tr.addView(text1);
tr.addView(text2);
/* Add row to TableLayout. */
tl.addView(tr);
}
}
}
Upvotes: 1
Reputation: 1305
Try it with this...
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/display_table" >
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="1dp"
>
<TextView android:layout_width="150dp"
android:layout_height="wrap_content"
android:background="@drawable/cell_shape"
android:textAppearance="?android:attr/textAppearanceMedium"
android:gravity="center"
android:text=""/>
<TextView
android:layout_width="160dp"
android:layout_height="wrap_content"
android:background="@drawable/cell_shape"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text=""
android:gravity="center"/>
</TableRow>
</TableLayout>
Specify layout width and height attribute to the ur textview
Upvotes: 1