Android RecyclerView Example
The RecyclerView class extends the ViewGroup class and implements the ScrollView interface. It is introduced in Marshmallow. It is an improved version of ListView with better performance and other benefits. RecyclerView is mostly used for designing user interfaces of Android applications with fine-grained control over lists and grids.
In this tutorial, we will create a list of items using RecyclerView with ImageView (for icons) and TextView (for details) and perform click listener on the item of its list.
MainActivity.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
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/rv_view"/>
</LinearLayout>
item.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_margin="10dp"
android:layout_height="80dp">
<ImageView
android:layout_width="80dp"
android:layout_height="80dp"
android:id="@+id/img1"/>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:id="@+id/txt_data"/>
<TextView
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/txt_data1"/>
<TextView
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/txt_data2"/>
</LinearLayout>
ModelData.java
package com.example.myapplication03;
public class ModelData {
String name;
String date;
String founder;
int img;
public int getImg() {
return img;
}
public void setImg(int img) {
this.img = img;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getFounder() {
return founder;
}
public void setFounder(String founder) {
this.founder = founder;
}
}
MainActivity.java
package com.example.myapplication03;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import android.view.View;
import com.example.myapplication03.Adapter.MyAdapter;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private RecyclerView rv_view;
String[] language = {"C", "C++", "Dart", "Java", "Kotlin", "R", "Matlab", "Ruby", "Python"};
String[] Date = {"1972", "1980", "6563", "1224", "5500", "1000", "100", "1235", "9985"};
String[] founder = {"denish", "bjarn strostup", "kasper lund", "gems goslin", "jetbtains", "Rstudio", "Matlab", "Rubymine", "Snack"};
int[] image={R.drawable.pattern_01,R.drawable.pattern_01,R.drawable.pattern_01,R.drawable.pattern_01,R.drawable.pattern_01,R.drawable.pattern_01,R.drawable.pattern_01,R.drawable.pattern_01,R.drawable.pattern_01,};
List<ModelData> list = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rv_view = findViewById(R.id.rv_view);
for (int i = 0; i < language.length; i++) {
ModelData modelData = new ModelData();
modelData.setName(language[i]);
modelData.setDate(Date[i]);
modelData.setFounder(founder[i]);
modelData.setImg(image[i]);
list.add(modelData);
}
MyAdapter adapter = new MyAdapter(MainActivity.this, list);
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(MainActivity.this);
rv_view.setLayoutManager(layoutManager);
rv_view.setAdapter(adapter);
}
}
MyAdapter.java
package com.example.myapplication03.Adapter;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.myapplication03.MainActivity;
import com.example.myapplication03.ModelData;
import com.example.myapplication03.R;
import java.util.List;
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewData> {
Activity activity;
List<ModelData> language;
public MyAdapter(MainActivity mainActivity, List<ModelData> language) {
activity=mainActivity;
this.language=language;
}
@NonNull
@Override
public ViewData onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(activity).inflate(R.layout.item,parent,false);
return new ViewData(view);
}
@Override
public void onBindViewHolder(@NonNull ViewData holder, int position) {
holder.txt_data.setText(language.get(position).getName());
holder.txt_data1.setText(language.get(position).getDate());
holder.txt_data2.setText(language.get(position).getFounder());
holder.img1.setImageResource(language.get(position).getImg());
}
@Override
public int getItemCount() {
return language.size();
}
class ViewData extends RecyclerView.ViewHolder {
TextView txt_data,txt_data1,txt_data2;
ImageView img1;
public ViewData(@NonNull View itemView) {
super(itemView);
txt_data=itemView.findViewById(R.id.txt_data);
txt_data1=itemView.findViewById(R.id.txt_data1);
txt_data2=itemView.findViewById(R.id.txt_data2);
img1=itemView.findViewById(R.id.img1);
}
}
}
Output:
0 Comments