RecyclerView is a powerful and flexible Android widget used to display large sets of data efficiently. Unlike ListView, it reuses views using the ViewHolder pattern and allows advanced features like animations and custom layouts.
Step 1: Add RecyclerView Dependency
Open your build.gradle (Module: app) and add the RecyclerView library:

dependencies {
implementation 'androidx.recyclerview:recyclerview:1.4.0'
}Sync the project.
Step 2: Create the RecyclerView in XML Layout
In your activity or fragment layout XML file:

<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="8dp"
android:clipToPadding="false"
tools:listitem="@layout/item_row" />Step 3: Create Item Layout (item_row.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="12dp">
<TextView
android:id="@+id/textViewItem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="List Item"
android:textSize="18sp" />
</LinearLayout>Step 4: Create a Model Class (e.g., ItemModel.java)

public class ItemModel {
private String itemText;
public ItemModel(String itemText) {
this.itemText = itemText;
}
public String getItemText() {
return itemText;
}
}Step 5: Create Adapter Class (ItemAdapter.java)

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
public class ItemAdapter extends RecyclerView.Adapter<ItemAdapter.ViewHolder> {
private List<ItemModel> itemList;
public ItemAdapter(List<ItemModel> itemList) {
this.itemList = itemList;
}
public static class ViewHolder extends RecyclerView.ViewHolder {
public TextView textViewItem;
public ViewHolder(View view) {
super(view);
textViewItem = view.findViewById(R.id.textViewItem);
}
}
@Override
public ItemAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_row, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
ItemModel item = itemList.get(position);
holder.textViewItem.setText(item.getItemText());
}
@Override
public int getItemCount() {
return itemList.size();
}
}Step 6: Set Up RecyclerView in Your Activity


import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private ItemAdapter adapter;
private List<ItemModel> itemList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
itemList = new ArrayList<>();
itemList.add(new ItemModel("Apple"));
itemList.add(new ItemModel("Banana"));
itemList.add(new ItemModel("Cherry"));
adapter = new ItemAdapter(itemList);
recyclerView.setAdapter(adapter);
}
}Optional: Add Click Listener (in ItemAdapter.java)
use Context
You can enhance user interaction by adding an interface for item clicks.

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.appcompat.app.AlertDialog;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
public class ItemAdapter extends RecyclerView.Adapter<ItemAdapter.ViewHolder> {
Context context;
private List<ItemModel> itemList;
public ItemAdapter(Context context, List<ItemModel> itemList) {
this.itemList = itemList;
this.context = context;
}
public static class ViewHolder extends RecyclerView.ViewHolder {
public TextView textViewItem;
public ViewHolder(View view) {
super(view);
textViewItem = view.findViewById(R.id.textViewItem);
}
}
@NonNull
@Override
public ItemAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_row, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
ItemModel item = itemList.get(position);
holder.textViewItem.setText(item.getItemText());
holder.textViewItem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new AlertDialog.Builder(context)
.setTitle(item.getItemText())
.setMessage("You have chosen "+item.getItemText())
.setNegativeButton("OK", null)
.show();
}
});
}
@Override
public int getItemCount() {
return itemList.size();
}
}import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private ItemAdapter adapter;
private List<ItemModel> itemList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
itemList = new ArrayList<>();
itemList.add(new ItemModel("Apple"));
itemList.add(new ItemModel("Banana"));
itemList.add(new ItemModel("Cherry"));
adapter = new ItemAdapter(this, itemList);
recyclerView.setAdapter(adapter);
}
}Conclusion
You’ve now successfully implemented a basic RecyclerView for displaying a list in Java using Android Studio. You can further improve it by adding features like item click events, animations, pagination, or integrating data from APIs or databases.