RecyclerView is a UI (user interface) component of the Android app. With it, you can show a list of items in Horizontal, Vertical, grid, and segregated manner. For example, If you have to show a list of data sets then you can use RecyclerView. The RecyclerView widget is a more advanced and flexible version of ListView
. In this example, we are going to use simple RecyclerView with a custom layout (Vertical scroll).
Let’s Build a Simple app for List with RecyclerView
This example, we will show the simple item in the list. This item has generated in dynamically using a loop.
Step 1. Create new project follow this tutorial
Step 2. Add design library in build.gradle (Module app)
implementation 'com.android.support:design:28.0.0-alpha1'
it’s for RecyclerView API and its updating from time to time please check with google doc or add from “open modules settings“
Step 3. Add RecyclerView in activity_main.xml file
The Recycler view
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout 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" android:background="@color/colorGrey" app:cardUseCompatPadding="true" tools:context="in.eyehunt.recyclerviewExample.MainActivity"> <android.support.v7.widget.RecyclerView android:id="@+id/my_recycler_view" android:layout_width="match_parent" android:layout_height="467dp" android:layout_marginBottom="8dp" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:scrollbars="vertical" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </android.support.constraint.ConstraintLayout>
Note : “@color/colorGrey” is added in res/values/color.xml resources, in <resource> tag
<color name="colorGrey">#e7e7e7</color>
Step 4. create new XML file row_user.xml (for items in the list) and add following code.
Add TextView in CardView (you can add more widget in a row)
<?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="33dp" android:layout_marginBottom="1dp" android:orientation="vertical"> <TextView android:id="@+id/tv_login" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" /> </android.support.v7.widget.CardView>
Step 5. Create model class Users.java
Add variables int id and String login and generate Getter and setter.
package in.eyehunt.recyclerviewExample; public class Users { private int id; private String login; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getLogin() { return login; } public void setLogin(String login) { this.login = login; } }
Step 6. Create adapter class Myadapter.class
The adapter class is a bridge between a data and view.
package in.eyehunt.recyclerviewExample; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import java.util.List; public class Myadapter extends RecyclerView.Adapter<Myadapter.MyViewHolder> { private List<Users> mDataList; public Myadapter(List<Users> listOfusers) { mDataList = listOfusers; } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_user, parent, false); return new MyViewHolder(view); } @Override public void onBindViewHolder(MyViewHolder holder, int position) { holder.tv_login.setText(mDataList.get(position).getLogin()); } @Override public int getItemCount() { return mDataList.size(); } public class MyViewHolder extends RecyclerView.ViewHolder { TextView tv_login; public MyViewHolder(View itemView) { super(itemView); tv_login = (TextView)itemView.findViewById(R.id.tv_login); } } }
Step 7. final add following code in MainActivity
It’s an Activity class where all thing is done like creating data and pass data to UI using adapters.
package in.eyehunt.recyclerviewExample; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import com.android.volley.RequestQueue; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private RecyclerView mRecyclerView; private RecyclerView.Adapter mAdapter; private RecyclerView.LayoutManager mLayoutManager; RequestQueue queue; List<Users> listOfusers; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listOfusers = new ArrayList<Users>(); //adding items in list for (int i =0 ; i < 5 ; i++){ Users user = new Users(); user.setId(i); user.setLogin("Eyehunt " + i); listOfusers.add(user); } mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view); mRecyclerView.setHasFixedSize(true); mLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false); mRecyclerView.setLayoutManager(mLayoutManager); mAdapter = new Myadapter(listOfusers); mRecyclerView.setAdapter(mAdapter); } }
Step 8. Now Run the application, in an emulator or On your Android device
Output: custom List with RecyclerView using CardView
Download source code android RecyclerView and source code
https://github.com/EyeHunts/Recyclerviewexample
Note: This example (Project) is developed in Android Studio 3.0.1, tested on Android 7.1.1 ( Android Nougat), build-tools version API 27+: Android API 27, P preview (Preview)
MinSdkVersion=”15″
TargetSdkVersion=”26″
Coding in JAVA