Android Table Layout With Recycler View. In this article, we will learn How to create the layout of a table in android. Here, we will implement a table layout in Android Studio with the help of Recycler View as shown below.

Android Table Layout With Recycler View
Android project structure

Step 1: Create a new project with an empty activity

MainActivity.java
- We are using an Array List as Dataset of DBHelper Class
- Our DBHelper Constructor has three parameters User Name, Email, id
- recyclerView is the object of RecyclerView class this object is used to manipulate recyclerView in our XML file
- findViewById method will link the object to view. R.id.recyclerView is recycler view unique id which we have assigned it to view in the XML file
- .add method will insert data into array list with new object parameters
- DividerItemDecoration will give spacing between the table_background.xml file
- LayoutManager is responsible for the positioning of views within recycler view
- LinearLayoutManager is used when layout manager is set in XML by RecyclerView
- The adapter is used to handle data and bind it to view we are using a custom adapter which is ListClass
- setAdapter method is used to assign the adapter to RecyclerView.
package com.example.tablelayoutwithrecyclerview;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
private ArrayList<DBHelper> arrayList = new ArrayList<>();
private RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.recyclerView);
arrayList.add(new DBHelper("asdasd","",1));
arrayList.add(new DBHelper("asd","",2));
arrayList.add(new DBHelper("asdad","",3));
arrayList.add(new DBHelper("sad","",4));
arrayList.add(new DBHelper("sadd","",5));
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(recyclerView.getContext(),
new LinearLayoutManager(this).getOrientation());
recyclerView.addItemDecoration(dividerItemDecoration);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(new ListClass(arrayList,MainActivity.this));
}
}
activity_main.xml
- RelativeLayout is our parent view group used to display children and align them
- Layout_width tag is used to set the width of the layout, match parent will set width to its same as a parent node
- Layout_height tag is used to set the height of layout, wrap content will change the height of view according to data fed into view
- RecyclerView is Recycler list view whenever used scroll down the child which is scrolled up will be recycled
- Layout_centerHorizontal tag will set the view centered on a horizontal plane
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/recyclerView"
android:layout_marginBottom="10dp"/>
</RelativeLayout>

Step 2: Create Two new Classes ListView and DBHelper

ListClass.java
- In this class, we are creating an adapter for our Recycler View
- This Adapter class will be used to populate Recycler view with user data as Card
- Extend adapter class with RecyclerView.Adapter<OuterClass.InnerClass>
- Extend inner class with RecyclerView.ViewHolder class
- Now in the inner class, we use the constructor to assign objects to view
- Override abstract method in ListAdapter class
- onCreateViewHolder method is used to populate Recycler View which we Created in activity_main.xml with table_view..xml
- LayoutInflater is used to inflate Recycler view with Card View
- We pass an array to Recycler view and it gets populated with a card view for every entry of the array
- onBindViewHolder method is used to make changes to card view child nodes
- getItemCount() method will return the size of array
- In ViewHolder class we are assigning TextView Objects to view in the ViewHolder constructor
package com.example.tablelayoutwithrecyclerview;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
public class ListClass extends RecyclerView.Adapter<ListClass.ViewHolder> {
private ArrayList<DBHelper> arrayList;
private Context context;
public ListClass(ArrayList<DBHelper> arrayList, Context context) {
this.arrayList = arrayList;
this.context = context;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
View v =layoutInflater.inflate(R.layout.table_view,parent,false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
String s=arrayList.get(position).getUserName();
String s1=arrayList.get(position).getEmail();
String s2=String.valueOf(arrayList.get(position).getId());
holder.userName.setText(s);
holder.Email.setText(s1);
holder.id.setText(s2);
}
@Override
public int getItemCount() {
return arrayList.size();
}
class ViewHolder extends RecyclerView.ViewHolder{
TextView userName,Email,id;
public ViewHolder(@NonNull View itemView) {
super(itemView);
userName = (TextView) itemView.findViewById(R.id.name);
Email = (TextView) itemView.findViewById(R.id.email);
id = (TextView) itemView.findViewById(R.id.idNumber);
}
}
}
table_view.xml
- TableLayout is our parent view which contains TableRow view
- Childs in TableRow view will align next to each other in a row
- TextView will display a text field on the screen
- Id tag is used to give every view a unique id
- Background tag is used set background for the view
- Gravity tag will align text in TextView
- textColor tag will change the color of the text
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:stretchColumns="1,2,3"
android:layout_margin="8dp"
>
<TableRow>
<TextView
android:id="@+id/name"
android:ems="5"
android:background="@drawable/table_background"
android:gravity="center"
android:padding="6dp"
android:layout_marginRight="15dp"
android:textColor="@color/white"
/>
<TextView
android:textColor="@color/white"
android:padding="6dp"
android:id="@+id/email"
android:background="@drawable/table_background"
android:ems="3"
android:gravity="center"
android:layout_marginRight="15dp"
/>
<TextView
android:textColor="@color/white"
android:padding="6dp"
android:gravity="center"
android:background="@drawable/table_background"
android:id="@+id/idNumber"
android:ems="3"
/>
</TableRow>
</TableLayout>
table_background.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="true" >
<shape android:shape="rectangle" >
<corners android:radius="10dp"/>
<solid android:color="#7B46C6" android:type="linear"/>
<padding android:left="10dp" android:right="10dp"/>
</shape>
</item>
</selector>
In this way, we created a Table layout in Android Studio with the help of Recycler View.