Recyclerview
==========
The RecyclerView class extends the ViewGroup class and implements ScrollingView interface. It is introduced in Marshmallow. It is an advanced version of the ListView with improved performance and other benefits. RecyclerView is mostly used to design the user interface with the fine-grain control over the lists and grids of android application.
we will create a list of items with ImageView (for the icon) and TextView (for description) using RecyclerView
Cardview
========
Android CardView UI component shows information inside cards. This component is generally used to show contact information. This component is available in another support library so we have to add its dependency too.
Android CardView widget allows us to control the background color, shadow, corner radius, elevation etc. For using the custom attributes in XML, we need to add the following namespace declaration to the parent layout.
In this programming tutorial we will study to use Recyclerview and Cardview. Let us start practicing by using this code structure:-
In activity_main.xml file add these codes:-
<?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="com.example.application.recyclerviewproject.MainActivity">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/darker_gray"
android:padding="4dp"
android:scrollbars="vertical" />
</RelativeLayout>
Add one xml file in layout example_item.xml file add these codes:-
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="4dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="4dp">
<ImageView
android:id="@+id/imageView"
android:layout_width="50dp"
android:layout_height="50dp"
android:padding="2dp" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toEndOf="@+id/imageView"
android:text="Line 1"
android:textColor="@android:color/black"
android:textSize="20sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView"
android:layout_marginStart="8dp"
android:layout_toEndOf="@+id/imageView"
android:text="Line 2"
android:textSize="15sp" />
</RelativeLayout>
</android.support.v7.widget.CardView>
In Java file add one file ExampleItem.java Model class :-
public class ExampleItem {
private int mImageResource;
private String mText1;
private String mText2;
public ExampleItem(int imageResource, String text1, String text2) {
mImageResource = imageResource;
mText1 = text1;
mText2 = text2;
}
public int getImageResource() {
return mImageResource;
}
public String getText1() {
return mText1;
}
public String getText2() {
return mText2;
}
}
In MainActivity.java Add these lines:-
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
RecyclerView rv;
RecyclerviewAdapter adapter;
@Overrideprotected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rv = (RecyclerView)findViewById(R.id.recyclerView);ArrayList<ExampleItem> exampleList = new ArrayList<>();
exampleList.add(new ExampleItem(R.drawable.ic_android, "Android", "Pie"));
exampleList.add(new ExampleItem(R.drawable.ic_audio, "Bollywood Songs", "Top songs"));
exampleList.add(new ExampleItem(R.drawable.ic_sun, "To do work", "Workout"));
adapter = new RecyclerviewAdapter(exampleList, this);
rv.setHasFixedSize(true);
rv.setLayoutManager(new LinearLayoutManager(this));
rv.setAdapter(adapter);
}}
Add RecyclerviewAdapter class in java class file and add these lines of codes:-
public class RecyclerviewAdapter extends RecyclerView.Adapter<RecyclerviewAdapter.ViewHolder> {
ArrayList<ExampleItem> exampleList=new ArrayList<>();
Context mContext;
public RecyclerviewAdapter(ArrayList<ExampleItem> exampleList, Context mContext) {
this.exampleList = exampleList;
this.mContext = mContext;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.textView.setText(exampleList.get(position).getText1());
holder.textView2.setText(exampleList.get(position).getText2());
Glide.with(mContext).load(exampleList.get(position).getImageResource()).into(holder.imageView);
}
@Override
public int getItemCount() {
return exampleList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView textView, textView2;
ImageView imageView;
public ViewHolder(@NonNull View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.textView);
textView2 = itemView.findViewById(R.id.textView2);
imageView = itemView.findViewById(R.id.imageView);
}
}
}
Add dependencies in gradle file:-
implementations 'com.android.support:recyclerview-v7:28.0.0'
implementations 'com.android.support:cardview-v7:28.0.0'

Comments