Android Tutorial on Recyclerview ListView

 

In mobile applications a lot of data needs to be shown in form of a listview which will consume more data and can cause problem in populating view in some cases so for this cause Android RecyclerView is introduced we will learn more from Android Tutorial on Android Recyclerview.

Generally from the word itself we can understand that recycle means reusing of the same view many times, listview does  the same but in additional here every time data is recycled and loaded so that additional data is not required in this typr of scenario.

 

Android Recyclerview :

Using RecyclerView is much advised as it will use the resources accordingly as needed and will work smoothly.so this can be a small intro regarding what we are going to do in this tutorial and what’s the purpose of it.

Before going any further we require few files to be added to gradle dependencies to go with android recyclerview they are

 

Dependency :

Add required dependency’s also make sure to check for the latest versions to avoid abnormal crashes using depreciated code.

compile 'com.android.support:support-v4:23.1.1'
compile 'com.android.support:recyclerview-v7:23.1.1'

 

Here i am using a RecyclerView to generate a listview this

<android.support.v7.widget.RecyclerView
    android:id="@+id/recycler_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

this recycle view will help in recreating view every time so instead of regular listview we use this recyclerview.

 

activity_main.xml

 

Including the above recycler view in xml file

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout 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:orientation="vertical">


    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />


</LinearLayout>

 

Then according to the above recyclerview we will design a listview type row as

 

list_item.xml

 

Creating a list_item in this style as below where we are adding two textviews and imageview. recyclelist

 

 

 

 

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

        <LinearLayout
            android:id="@+id/top_layout"
            android:layout_width="match_parent"
            android:orientation="horizontal"
            android:layout_height="wrap_content"
            android:weightSum="3">

            <ImageView
                android:id="@+id/imgview"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="2"/>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">


            <TextView
                android:id="@+id/nametext"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Name"
                android:layout_marginLeft="10dp"
                android:padding="10dp"
                android:textColor="#000000"
                android:textSize="20dp" />

            <TextView
                android:id="@+id/categorytext"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Category"
                android:layout_marginLeft="10dp"
                android:padding="10dp"
                android:textColor="#0f0f0f"
                android:textSize="16dp" />

                </LinearLayout>

        </LinearLayout>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="0.3dp"
        android:background="#000000"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"
        android:layout_marginLeft="30dp"
        android:layout_marginRight="30dp"/>

</LinearLayout>

 

So the designing of the listview using recyclerview is completed then we will focus on data to be passed and processed in the listview

 

MainActivity.java

 

Here we are adding three ArrayList to assign data to listview as

Name = new ArrayList<>(Arrays.asList("Tomatoes", "Bananas ", "Potatoes", "Pizza", "Carrots", "Ice Cream", "Orange", "Peas"));

Category = new ArrayList<>(Arrays.asList("Vegetables", "Fruits ", "Vegetables", "Baked", "Vegetables", "Dairy", "Fruits", "Vegetables"));

and then images as

Image = new ArrayList<>(Arrays.asList(R.drawable.tomatoes, R.drawable.bananas, R.drawable.potatoes, R.drawable.pizza, R.drawable.carrots, R.drawable.icecream, R.drawable.orange, R.drawable.peas));

Then we will be initializing recyclerview which we have declared in activity_main.xml

mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
mRecyclerView.setHasFixedSize(true);

mLayoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(mLayoutManager);

Then setting up it with adapter

mAdapter = new ListAdapter(MainActivity.this, Name, Category, Image);
mRecyclerView.setAdapter(mAdapter);

 

MainActivity:

Providing the Full Code for Android Recyclerview implementation.

 

package listview.androidcoding.abhishek.recyclerviewlistview;

import android.app.Activity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;

import java.util.ArrayList;
import java.util.Arrays;

public class MainActivity extends Activity {

    RecyclerView mRecyclerView;
    RecyclerView.LayoutManager mLayoutManager;
    RecyclerView.Adapter mAdapter;
    ArrayList<String> Name;
    ArrayList<String> Category;
    ArrayList<Integer> Image;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Name = new ArrayList<>(Arrays.asList("Tomatoes", "Bananas ", "Potatoes", "Pizza", "Carrots", "Ice Cream", "Orange", "Peas"));
        Category = new ArrayList<>(Arrays.asList("Vegetables", "Fruits ", "Vegetables", "Baked", "Vegetables", "Dairy", "Fruits", "Vegetables"));
        Image = new ArrayList<>(Arrays.asList(R.drawable.tomatoes, R.drawable.bananas, R.drawable.potatoes, R.drawable.pizza, R.drawable.carrots, R.drawable.icecream, R.drawable.orange, R.drawable.peas));


        mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
        mRecyclerView.setHasFixedSize(true);

        mLayoutManager = new LinearLayoutManager(this);
        mRecyclerView.setLayoutManager(mLayoutManager);

        mAdapter = new ListAdapter(MainActivity.this, Name, Category, Image);
        mRecyclerView.setAdapter(mAdapter);

    }

}

Then creating ListAdapter which will be using recycleview to process a listview

ListAdapter

 

package listview.androidcoding.abhishek.recyclerviewlistview;


import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.ArrayList;

public class ListAdapter extends RecyclerView.Adapter<ListAdapter.ViewHolder> {

    ArrayList<String> Name;
    ArrayList<String> Category;
    ArrayList<Integer> Image;
    Context context;

    public ListAdapter(Context context, ArrayList<String> Name, ArrayList<String> Category, ArrayList<Integer> Image) {
        super();
        this.context = context;
        this.Name = Name;
        this.Category = Category;
        this.Image = Image;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        View v = LayoutInflater.from(viewGroup.getContext())
                .inflate(R.layout.list_item, viewGroup, false);
        ViewHolder viewHolder = new ViewHolder(v);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(ViewHolder viewHolder, int i) {
        viewHolder.nametext.setText(Name.get(i));
        viewHolder.categorytext.setText(Category.get(i));
        viewHolder.imgview.setImageResource(Image.get(i));


    }

    @Override
    public int getItemCount() {
        return Name.size();
    }

    public static class ViewHolder extends RecyclerView.ViewHolder {

        public ImageView imgview;
        public TextView nametext;
        public TextView categorytext;


        public ViewHolder(View itemView) {
            super(itemView);
            imgview = (ImageView) itemView.findViewById(R.id.imgview);
            nametext = (TextView) itemView.findViewById(R.id.nametext);
            categorytext = (TextView) itemView.findViewById(R.id.categorytext);

        }


    }


}

So here we are done with this android recyclerview tutorial and if you have any queries can ask below.

 

Android Recyclerview Output :

The screen below depicts the implementation of Android Recyclerview tutorial.

Android Recyclerview

 

recycle2

 

If you have any query’s in the tutorial on Android Recyclerview let us know in the comment section below.

If you like this tutorial do like and share for more interesting android tutorials.

Show Buttons
Hide Buttons
Read previous post:
Android Tutorial On Gallery View

  Android Gallery View : In this Android Tutorial On Gallery View we will learn how to show a static...

Close