Adding Table rows Dynamically in Android
Display Data in GridView in Android
How to use TextView to display GridView item text in Android ?
Output Form like this
Solutions:
Layout file like:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.root.mymysqlapp.Table2Activity">
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#3d455b"
android:layout_alignParentLeft="true" >
<HorizontalScrollView
android:id="@+id/hscrll1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<RelativeLayout
android:id="@+id/RelativeLayout1"
android:layout_width="fill_parent"
android:layout_gravity="center"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TableLayout
android:id="@+id/table_main"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true" >
</TableLayout>
</RelativeLayout>
</HorizontalScrollView>
</ScrollView>
</RelativeLayout>
Code like this :
Create an init() function and point the table layout. Then create the needed rows and columns. Call init function in your onCreate method:
package com.example.root.mymysqlapp;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
public class Table2Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_table2);
init();
}
public void init() {
TableLayout stk = (TableLayout) findViewById(R.id.table_main);
TableRow tbrow0 = new TableRow(this);
TextView tv0 = new TextView(this);
tv0.setText(" Sl.No ");
tv0.setTextColor(Color.WHITE);
tbrow0.addView(tv0);
TextView tv1 = new TextView(this);
tv1.setText(" Student Name ");
tv1.setTextColor(Color.WHITE);
tbrow0.addView(tv1);
TextView tv2 = new TextView(this);
tv2.setText(" Class ");
tv2.setTextColor(Color.WHITE);
tbrow0.addView(tv2);
TextView tv3 = new TextView(this);
tv3.setText(" Total Fee ");
tv3.setTextColor(Color.WHITE);
tbrow0.addView(tv3);
stk.addView(tbrow0);
for (int i = 1; i <= 25; i++) {
TableRow tbrow = new TableRow(this);
TextView t1v = new TextView(this);
t1v.setText(""+i);
t1v.setTextColor(Color.WHITE);
t1v.setGravity(Gravity.CENTER);
tbrow.addView(t1v);
TextView t2v = new TextView(this);
t2v.setText("Student " + i);
t2v.setTextColor(Color.WHITE);
t2v.setGravity(Gravity.CENTER);
tbrow.addView(t2v);
TextView t3v = new TextView(this);
t3v.setText("1-A");
t3v.setTextColor(Color.WHITE);
t3v.setGravity(Gravity.CENTER);
tbrow.addView(t3v);
TextView t4v = new TextView(this);
t4v.setText("1500.00");
t4v.setTextColor(Color.WHITE);
t4v.setGravity(Gravity.CENTER);
tbrow.addView(t4v);
stk.addView(tbrow);
}
}
}
Above application expline working of TableLayout .
VIDEO
How add and delete rows to table layout in java programically
How to delete table row in table layout in android
Layout:
<? xml version = "1.0" encoding = "utf-8" ?>
< TableLayout xmlns : android = "http://schemas.android.com/apk/res/android"
android : id = "@+id/table"
android : layout_width = "match_parent"
android : layout_height = "match_parent" >
</ TableLayout >
Activity:
public class TableLayoutActivity extends Activity {
@Override
protected void onCreate ( Bundle savedInstanceState ) {
super . onCreate ( savedInstanceState );
setContentView ( R . layout . table_layout );
final TableLayout tableLayout = ( TableLayout ) findViewById ( R . id . table );
for ( int i = 0 ; i < 5 ; i ++) {
// Creation row
final TableRow tableRow = new TableRow ( this );
tableRow . setLayoutParams ( new TableLayout . LayoutParams ( TableLayout . LayoutParams . WRAP_CONTENT , TableLayout . LayoutParams . WRAP_CONTENT ));
// Creation textView
final TextView text = new TextView ( this );
text . setText ( "Test" + i );
text . setLayoutParams ( new TableRow . LayoutParams ( TableRow . LayoutParams . WRAP_CONTENT , TableRow . LayoutParams . WRAP_CONTENT ));
// Creation button
final Button button = new Button ( this );
button . setText ( "Delete" );
button . setLayoutParams ( new TableRow . LayoutParams ( TableRow . LayoutParams . WRAP_CONTENT , TableRow . LayoutParams . WRAP_CONTENT ));
button . setOnClickListener ( new View . OnClickListener () {
@Override
public void onClick ( View v ) {
final TableRow parent = ( TableRow ) v . getParent ();
tableLayout . removeView ( parent );
}
});
tableRow . addView ( text );
tableRow . addView ( button );
tableLayout . addView ( tableRow );
}
}
}
Inserting table row beginning of table layout in java programmatically
tbl.addView(View child, int index)
child contains rows object and index contains for add row position in table layout.
Example
tbl.addView(row,0 ); // added first row
tbl.addView(row,1 ); // added second row
.
.
tbl.addView(row); // added row in end of table layout.
Dynamically add imagebutton programatically android
ImageButton b1 = new ImageButton(this);
b1.setImageResource(R.drawable.delete);
b1.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final TableRow parent = (TableRow) v.getParent();
stk.removeView(parent);
}
});
tbrow.addView(b1);
How do I get values from a dynamically created android TableRow?
getChildAt
to get a hold of the two TextViews
and get the data:
tr . setOnClickListener ( new View . OnClickListener () {
public void onClick ( View view ) {
TableRow t = ( TableRow ) view ;
TextView firstTextView = ( TextView ) t . getChildAt ( 0 );
TextView secondTextView = ( TextView ) t . getChildAt ( 1 );
String firstText = firstTextView . getText (). toString ();
String secondText = secondTextView . getText (). toString ();
}
});
Solution for the get values of selected row on clicked button in table row.
ImageButton b1 = new ImageButton(EntriesActivity.this );
b1.setImageResource(R.drawable.delete );
b1.setLayoutParams (new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT , TableRow.LayoutParams.WRAP_CONTENT ));
b1.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
final TableRow parent = (TableRow) v.getParent();
//code for remove concerned row
//stk.removeView(parent);
TextView items = (TextView) parent.getChildAt(7 );
Toast.makeText (getApplicationContext(), items.getText().toString() ,Toast.LENGTH_SHORT ).show();
}
});
row.addView(b1);
How to hide a particular column in Android TableRow
Try to Use setVisibility(View.GONE);
t3v . setVisibility ( View . GONE );
TextView id = new TextView(EntriesActivity.this );
id.setText (content.get("id" ).toString());
id.setTextColor(Color.WHITE );
id.setVisibility(View.GONE );
row.addView(id);
Get total RowCount for TableLayout in Android
Through this code you can get the total rowCount
for TableLayout
TableLayoutName . getChildCount ();
Examples
TableLayout tb = (TableLayout) findViewById(R.id.table_main );
if(tb.getChildCount()>1 ){
.....Code Here.....
}
Adding space between columns of a TableLayout
Programetically add
TextView count = new TextView(RptsalesreportdisplayActivity.this);
count.setText(obj.get("count").toString());
count.setTextColor(Color.WHITE);
count.setPadding(0,0,30,0);
row.addView(count);
<TableRow
android:layout_width = "fill_parent"
android:layout_height = "wrap_content" >
<TextView
android:layout_width = "0"
android:layout_height = "wrap_content"
android:layout_weight = ".25"
android:gravity = "center"
android:text = "col1" /> ...........
Set tablelayout row background color programmatically
tbrow0.setBackgroundResource (R.color.cgreen );