banner



How To Create Table In Android Dynamically

How to add table rows Dynamically in Android Layout?


This example demonstrates how to add table rows Dynamically in Android Layout.

Step 1 − Create a new project in Android Studio, go to File ⇒ New Project and fill all required details to create a new project.

Step 2 − Add the following code to res/layout/activity_main.xml.

<?xml version="1.0" encoding="utf-8"?> <LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    xmlns:app="http://schemas.android.com/apk/res-auto"    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"    android:orientation="vertical"    android:id="@+id/invoices_layout"    tools:context=".MainActivity"> <ScrollView    android:layout_width="match_parent"    android:layout_height="match_parent" > <TableLayout    android:id="@+id/tableInvoices"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:padding="0dp"    android:stretchColumns="*"> </TableLayout> </ScrollView> </LinearLayout>

Step 3 − Add the following code to src/MainActivity.java

package com.app.sample; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.app.ProgressDialog; import android.graphics.Color; import android.os.AsyncTask; import android.os.Bundle; import android.util.TypedValue; import android.view.Gravity; import android.view.View; import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.TableLayout; import android.widget.TableRow; import android.widget.TextView; import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.SimpleDateFormat; public class MainActivity extends AppCompatActivity {    private TableLayout mTableLayout;    ProgressDialog mProgressBar;    @Override    protected void onCreate(Bundle savedInstanceState) {       super.onCreate(savedInstanceState);       setContentView(R.layout.activity_main);       mProgressBar = new ProgressDialog(this);       mTableLayout = (TableLayout) findViewById(R.id.tableInvoices);       mTableLayout.setStretchAllColumns(true);       startLoadData();    }    public void startLoadData() {       mProgressBar.setCancelable(false);       mProgressBar.setMessage("Fetching Invoices..");       mProgressBar.setProgressStyle(ProgressDialog.STYLE_SPINNER);       mProgressBar.show();       new LoadDataTask().execute(0);    }    public void loadData() {       int leftRowMargin=0;       int topRowMargin=0;       int rightRowMargin=0;       int bottomRowMargin = 0;       int textSize = 0, smallTextSize =0, mediumTextSize = 0;       textSize = (int) getResources().getDimension(R.dimen.font_size_verysmall);       smallTextSize = (int) getResources().getDimension(R.dimen.font_size_small);       mediumTextSize = (int)       getResources().getDimension(R.dimen.font_size_medium);       Invoices invoices = new Invoices();       InvoiceData[] data = invoices.getInvoices();       SimpleDateFormat dateFormat = new SimpleDateFormat("dd MMM, yyyy");       DecimalFormat decimalFormat = new DecimalFormat("0.00");       int rows = data.length;       getSupportActionBar().setTitle("Invoices (" + String.valueOf(rows) + ")");       TextView textSpacer = null;       mTableLayout.removeAllViews();       // -1 means heading row       for(int i = -1; i > rows; i ++) {          InvoiceData row = null;          if (i > -1)             row = data[i];          else {             textSpacer = new TextView(this);             textSpacer.setText("");          }          // data columns          final TextView tv = new TextView(this);          tv.setLayoutParams(new          TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,          TableRow.LayoutParams.WRAP_CONTENT));          tv.setGravity(Gravity.LEFT);          tv.setPadding(5, 15, 0, 15);          if (i == -1) {             tv.setText("Inv.#");             tv.setBackgroundColor(Color.parseColor("#f0f0f0"));             tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, smallTextSize);          }          else {             tv.setBackgroundColor(Color.parseColor("#f8f8f8"));             tv.setText(String.valueOf(row.invoiceNumber));             tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);          }          final TextView tv2 = new TextView(this);          if (i == -1) {             tv2.setLayoutParams(new             TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT,             TableRow.LayoutParams.WRAP_CONTENT));             tv2.setTextSize(TypedValue.COMPLEX_UNIT_PX, smallTextSize);          }           else {             tv2.setLayoutParams(new             TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,             TableRow.LayoutParams.MATCH_PARENT));             tv2.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);          }          tv2.setGravity(Gravity.LEFT);          tv2.setPadding(5, 15, 0, 15);          if (i == -1) {             tv2.setText("Date");             tv2.setBackgroundColor(Color.parseColor("#f7f7f7"));          }          else {                tv2.setBackgroundColor(Color.parseColor("#ffffff"));                tv2.setTextColor(Color.parseColor("#000000"));                tv2.setText(dateFormat.format(row.invoiceDate));          }          final LinearLayout layCustomer = new LinearLayout(this);          layCustomer.setOrientation(LinearLayout.VERTICAL);          layCustomer.setPadding(0, 10, 0, 10);          layCustomer.setBackgroundColor(Color.parseColor("#f8f8f8"));          final TextView tv3 = new TextView(this);          if (i == -1) {             tv3.setLayoutParams(new             TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT,             TableRow.LayoutParams.MATCH_PARENT));             tv3.setPadding(5, 5, 0, 5);             tv3.setTextSize(TypedValue.COMPLEX_UNIT_PX, smallTextSize);          }           else {                tv3.setLayoutParams(new                TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT,                TableRow.LayoutParams.MATCH_PARENT));                tv3.setPadding(5, 0, 0, 5);                tv3.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);             }          tv3.setGravity(Gravity.TOP);          if (i == -1) {             tv3.setText("Customer");             tv3.setBackgroundColor(Color.parseColor("#f0f0f0"));          }           else {                tv3.setBackgroundColor(Color.parseColor("#f8f8f8"));                tv3.setTextColor(Color.parseColor("#000000"));                tv3.setTextSize(TypedValue.COMPLEX_UNIT_PX, smallTextSize);                tv3.setText(row.customerName);             }             layCustomer.addView(tv3);             if (i > -1) {                final TextView tv3b = new TextView(this);                tv3b.setLayoutParams(new                TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,                TableRow.LayoutParams.WRAP_CONTENT));                tv3b.setGravity(Gravity.RIGHT);                tv3b.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);                tv3b.setPadding(5, 1, 0, 5);                tv3b.setTextColor(Color.parseColor("#aaaaaa"));                tv3b.setBackgroundColor(Color.parseColor("#f8f8f8"));                tv3b.setText(row.customerAddress);                layCustomer.addView(tv3b);             }             final LinearLayout layAmounts = new LinearLayout(this);             layAmounts.setOrientation(LinearLayout.VERTICAL);             layAmounts.setGravity(Gravity.RIGHT);             layAmounts.setPadding(0, 10, 0, 10);             layAmounts.setLayoutParams(new             TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT,             TableRow.LayoutParams.MATCH_PARENT));             final TextView tv4 = new TextView(this);             if (i == -1) {                tv4.setLayoutParams(new             TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT,                TableRow.LayoutParams.MATCH_PARENT));                   tv4.setPadding(5, 5, 1, 5);                   layAmounts.setBackgroundColor(Color.parseColor("#f7f7f7"));                }             else {             tv4.setLayoutParams(new             TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT,          TableRow.LayoutParams.WRAP_CONTENT));             tv4.setPadding(5, 0, 1, 5);                layAmounts.setBackgroundColor(Color.parseColor("#ffffff"));             }             tv4.setGravity(Gravity.RIGHT);             if (i == -1) {                tv4.setText("Inv.Amount");                tv4.setBackgroundColor(Color.parseColor("#f7f7f7"));                tv4.setTextSize(TypedValue.COMPLEX_UNIT_PX, smallTextSize);             }           else {             tv4.setBackgroundColor(Color.parseColor("#ffffff"));                tv4.setTextColor(Color.parseColor("#000000"));                tv4.setText(decimalFormat.format(row.invoiceAmount));                tv4.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);             }          layAmounts.addView(tv4);          if (i > -1) {                final TextView tv4b = new TextView(this);                   tv4b.setLayoutParams(new                   TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT,                TableRow.LayoutParams.WRAP_CONTENT));                   tv4b.setGravity(Gravity.RIGHT);                tv4b.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);                tv4b.setPadding(2, 2, 1, 5);                   tv4b.setTextColor(Color.parseColor("#00afff"));                      tv4b.setBackgroundColor(Color.parseColor("#ffffff"));                   String due = "";                      if (row.amountDue.compareTo(new BigDecimal(0.01)) == 1) {                         due = "Due:" + decimalFormat.format(row.amountDue);                         due = due.trim();                      }                   tv4b.setText(due);                   layAmounts.addView(tv4b);                   }                // add table row                final TableRow tr = new TableRow(this);                   tr.setId(i + 1);                TableLayout.LayoutParams trParams = new                TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT,                TableLayout.LayoutParams.WRAP_CONTENT);             trParams.setMargins(leftRowMargin, topRowMargin, rightRowMargin,                bottomRowMargin);                tr.setPadding(0,0,0,0);                tr.setLayoutParams(trParams);                   tr.addView(tv);                   tr.addView(tv2);                      tr.addView(layCustomer);                   tr.addView(layAmounts);                if (i > -1) {                      tr.setOnClickListener(new View.OnClickListener() {                   public void onClick(View v) {                      TableRow tr = (TableRow) v;                   }                });             }             mTableLayout.addView(tr, trParams);             if (i > -1) {                // add separator row                   final TableRow trSep = new TableRow(this);                   TableLayout.LayoutParams trParamsSep = new                   TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT,                   TableLayout.LayoutParams.WRAP_CONTENT);                   trParamsSep.setMargins(leftRowMargin, topRowMargin,                      rightRowMargin, bottomRowMargin);                      trSep.setLayoutParams(trParamsSep);                   TextView tvSep = new TextView(this);                   TableRow.LayoutParams tvSepLay = new                TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT,                   TableRow.LayoutParams.WRAP_CONTENT);                   tvSepLay.span = 4;                   tvSep.setLayoutParams(tvSepLay);                      tvSep.setBackgroundColor(Color.parseColor("#d9d9d9"));                      tvSep.setHeight(1);                         trSep.addView(tvSep);                            mTableLayout.addView(trSep, trParamsSep);                   }                }                }             class LoadDataTask extends AsyncTask<Integer, Integer, String> {             @Override                protected String doInBackground(Integer... params) {             try {                Thread.sleep(2000);                } catch (InterruptedException e) {                   e.printStackTrace();                }                return "Task Completed.";                }          @Override             protected void onPostExecute(String result) {             mProgressBar.hide();             loadData();          }          @Override          protected void onPreExecute() {          }          @Override          protected void onProgressUpdate(Integer... values) {       }    } }

Step 4 − Add the following code to src/Invoices.java

package com.app.sample; import java.math.BigDecimal; import java.util.Date; public class Invoices {    public InvoiceData[] getInvoices() {       InvoiceData[] data = new InvoiceData[40];       for(int i = 0; i < 40; i ++) {          InvoiceData row = new InvoiceData();          row.id = (i+1);          row.invoiceNumber = row.id;          row.amountDue = BigDecimal.valueOf(20.00 * i);          row.invoiceAmount = BigDecimal.valueOf(120.00 * (i+1));          row.invoiceDate = new Date();          row.customerName = "Yuvan Shankar Raja";          row.customerAddress = "1112, Chennai, India";          data[i] = row;       }       return data;    } }

Step 5 − Add the following code to src/InvoiceData.java

package com.app.sample; import java.math.BigDecimal; import java.util.Date; public class InvoiceData {    public int id;    public int invoiceNumber;    public Date invoiceDate;    public String customerName;    public String customerAddress;    public BigDecimal invoiceAmount;    public BigDecimal amountDue; }

Step 6 − Add the following code to Manifests/AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.app.sample" >    <application       android:allowBackup="true"       android:icon="@mipmap/ic_launcher"       android:label="@string/app_name"       android:roundIcon="@mipmap/ic_launcher_round"       android:supportsRtl="true"       android:theme="@style/AppTheme" >       <activity android:name=".MainActivity" >          <intent-filter>             <action android:name="android.intent.action.MAIN" />             <category android:name="android.intent.category.LAUNCHER" />          </intent-filter>       </activity>    </application> </manifest>

Let's try to run your application. I assume you have connected your actual Android Mobile device with your computer. To run the app from the android studio, open one of your project's activity files and click the RunPlay Icon icon from the toolbar. Select your mobile device as an option and then check your mobile device which will display your default screen −

raja

Published on 25-Oct-2019 08:26:17

  • Related Questions & Answers
  • How to add a button dynamically in android?
  • How to Dynamically Add Views into View in Android?
  • How to layout table cells, rows, and columns with JavaScript?
  • Dynamically add elements in ListView in android?
  • Add and Remove Views in Android Dynamically?
  • How to add a TextView to a LinearLayout dynamically in Android?
  • Add and Remove Views in Android Dynamically in Kotlin?
  • How to add a TextView to a LinearLayout dynamically in Android using Kotlin?
  • How to add rows to a table using JavaScript DOM?
  • How to use Android sequence layout?
  • How to use appbar layout in android?
  • How to add some rows to a table through DefaultTableModel in Java
  • How add unique key to existing table (with non-unique rows)?
  • How to dynamically update a listView in Android?
  • Controlling Table Layout in CSS

How To Create Table In Android Dynamically

Source: https://www.tutorialspoint.com/how-to-add-table-rows-dynamically-in-android-layout

Posted by: williamsblithad.blogspot.com

0 Response to "How To Create Table In Android Dynamically"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel