In this example, you will know how to implement RecyclerView in Android using Kotlin. RecyclerView is a more advanced and adaptable version of the listview and gridview. It's a container for presenting large amounts of data sets in a way that allows them to be browsed quickly while limiting the number of views. It has the ability to reuse its views.
With RecyclerView we can arrange the items in Vertical and horizontal directions using RecyclerView LayoutManager
Implementation:
Create a new Project in android studio.
Go to File > New > New Project > Empty Activity > Next > Enter Name > Select Language Kotlin > Finish |
Add the recyclerview and cardview dependency to build.gradle(app)
implementation 'androidx.recyclerview:recyclerview:1.2.0' |
Add CardView Dependency if needed (No need to add In latest version of android studio)
implementation 'androidx.cardview:cardview:1.0.0' |
Go to activity_recycler_view.xml file and change the constraint layout to Linear Layout as follows:
<LinearLayout |
Add recyclerview widget inside LinearLayout.
<androidx.recyclerview.widget.RecyclerView |
Create a new layout resource file and add the following code
app > res > layout > new > layout resource file > enter name (cardview_layout.xml) > ok |
<?xml version="1.0" encoding="utf-8"?> <LinearLayout <ImageView <TextView </LinearLayout> </androidx.cardview.widget.CardView> |
Create a new Kotlin class for model
app > java > package name > right-click > New > Kotlin class/file > enter name > OK |
This file will hold the information of every item which you want to show in your RecyclerView.
class RecyclerModel(val image : Int, val text: String) { } |
Create a adapter class
app > java > package name > right-click > New > Kotlin class/file > enter name > ok |
This class contains some important functions to work with the RecyclerView these are as follows:
> onCreateViewHolder(): This function sets the views to display the items.
> onBindViewHolder(): This function is used to bind the list items to our widgets such as TextView, ImageView, etc.
> getItemCount(): It returns the count of items present in the list.
import android.view.LayoutInflater class RecyclerAdapter(private val dataList: List) : RecyclerView.Adapter() { override fun onBindViewHolder(holder: RecyclerAdapter.ViewHolder, position: Int) { // Image set to the imageview widget // Text set to the textview widget override fun getItemCount(): Int { } |
Go to RecyclerViewActivity.kt file and add the following code
val recyclerview = findViewById(R.id.recyclerview) recyclerview.layoutManager = LinearLayoutManager(this) for (i in 1..12) {
recyclerview.adapter = adapter |
Now run the app in your emulator, and get the following output.
OUTPUT:
Complete source code of RecyclerView in android:
activity_recycler_view.xml file
<?xml version="1.0" encoding="utf-8"?> <androidx.recyclerview.widget.RecyclerView |
RecyclerViewActivity.kt file
import androidx.appcompat.app.AppCompatActivity class RecyclerViewActivity : AppCompatActivity() { // Used for vertical linearlayout view // ArrayList of class RecyclerModel // This loop will create 12 Views containing // This will pass the ArrayList to our Adapter // Setting the Adapter with the recyclerview } |
card_view_layout.xml file
<?xml version="1.0" encoding="utf-8"?> <LinearLayout <ImageView <TextView </LinearLayout> </androidx.cardview.widget.CardView> |
RecyclerModel.kt file
class RecyclerModel(val image : Int, val text: String) { } |
RecyclerAdapter.kt file
import android.view.LayoutInflater class RecyclerAdapter(private val dataList: List) : RecyclerView.Adapter() { override fun onBindViewHolder(holder: RecyclerAdapter.ViewHolder, position: Int) { // Image set to the imageview widget // Text set to the textview widget override fun getItemCount(): Int { } |
build.gradle(app) file
plugins { android { defaultConfig { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" buildTypes { dependencies { implementation 'androidx.core:core-ktx:1.7.0' |
Conclusion: We have covered how to add RecyclerView in Android using kotlin language.
<?xml version="1.0" encoding="utf-8"?>
Create a new Kotlin class for model
app > java > package name > right-click > New > Kotlin class/file > enter name > OK |
This file will hold the information of every item which you want to show in your RecyclerView.
class RecyclerModel(val image : Int, val text: String) { } |
Create a adapter class
app > java > package name > right-click > New > Kotlin class/file > enter name > ok |
This class contains some important functions to work with the RecyclerView these are as follows:
> onCreateViewHolder(): This function sets the views to display the items.
> onBindViewHolder(): This function is used to bind the list items to our widgets such as TextView, ImageView, etc.
> getItemCount(): It returns the count of items present in the list.
import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.ImageView import android.widget.TextView import androidx.recyclerview.widget.RecyclerView class RecyclerAdapter(private val dataList: List) : RecyclerView.Adapter() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerAdapter.ViewHolder { val view = LayoutInflater.from(parent.context) .inflate(R.layout.card_view_layout, parent, false) return ViewHolder(view) } override fun onBindViewHolder(holder: RecyclerAdapter.ViewHolder, position: Int) { val recyclerModel = dataList[position] // Image set to the imageview widget holder.imageView.setImageResource(recyclerModel.image) // Text set to the textview widget holder.textView.text = recyclerModel.text } override fun getItemCount(): Int { return dataList.size } class ViewHolder(ItemView: View) : RecyclerView.ViewHolder(ItemView) { val imageView: ImageView = itemView.findViewById(R.id.imageview) val textView: TextView = itemView.findViewById(R.id.textView) } } |
Go to RecyclerViewActivity.kt file and add the following code
val recyclerview = findViewById(R.id.recyclerview)
recyclerview.layoutManager = LinearLayoutManager(this) val data = ArrayList() for (i in 1..12) { data.add(RecyclerModel(R.drawable.android, "Android" + i)) } val adapter = RecyclerAdapter(data) recyclerview.adapter = adapter |
Now run the app in your emulator, and get the following output.
OUTPUT:
Complete source code of RecyclerView in android:
activity_recycler_view.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" tools:context=".RecyclerViewActivity"> <androidx.recyclerview.widget.RecyclerView android:id="@+id/recyclerview" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout> |
RecyclerViewActivity.kt file
import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView class RecyclerViewActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_recycler_view) val recyclerview = findViewById(R.id.recyclerview) // Used for vertical linearlayout view recyclerview.layoutManager = LinearLayoutManager(this) // ArrayList of class RecyclerModel val data = ArrayList() // This loop will create 12 Views containing // the image with the count of view for (i in 1..12) { data.add(RecyclerModel(R.drawable.android, "Android" + i)) } // This will pass the ArrayList to our Adapter val adapter = RecyclerAdapter(data) // Setting the Adapter with the recyclerview recyclerview.adapter = adapter } } |
card_view_layout.xml file
<?xml version="1.0" encoding="utf-8"?> <androidx.cardview.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="50dp" android:layout_margin="10dp" app:cardElevation="6dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="5dp"> <ImageView android:id="@+id/imageview" android:layout_width="40dp" android:layout_height="40dp" android:src="@drawable/android" android:scaleType="centerCrop" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="10dp" android:layout_marginLeft="15dp" android:text="Android" android:textSize="20sp" android:textStyle="bold" /> </LinearLayout> </androidx.cardview.widget.CardView> |
RecyclerModel.kt file
class RecyclerModel(val image : Int, val text: String) { } |
RecyclerAdapter.kt file
import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.ImageView import android.widget.TextView import androidx.recyclerview.widget.RecyclerView class RecyclerAdapter(private val dataList: List) : RecyclerView.Adapter() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerAdapter.ViewHolder { val view = LayoutInflater.from(parent.context) .inflate(R.layout.card_view_layout, parent, false) return ViewHolder(view) } override fun onBindViewHolder(holder: RecyclerAdapter.ViewHolder, position: Int) { val recyclerModel = dataList[position] // Image set to the imageview widget holder.imageView.setImageResource(recyclerModel.image) // Text set to the textview widget holder.textView.text = recyclerModel.text } override fun getItemCount(): Int { return dataList.size } class ViewHolder(ItemView: View) : RecyclerView.ViewHolder(ItemView) { val imageView: ImageView = itemView.findViewById(R.id.imageview) val textView: TextView = itemView.findViewById(R.id.textView) } } |
build.gradle(app) file
plugins { id 'com.android.application' id 'kotlin-android' } android { compileSdk 31 defaultConfig { applicationId "com.nishajain.kotinexamples" minSdk 21 targetSdk 31 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' } } dependencies { implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.4.0' implementation 'com.google.android.material:material:1.4.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.2' testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' implementation 'androidx.recyclerview:recyclerview:1.2.0' } |
Conclusion: We have covered how to add RecyclerView in Android using kotlin language.
-->
Article Contributed By :
|
|
|
|
1296 Views |