input license here

How to create recyclerview using kotin in android studio

A Simple example to create a RecyclerView using Kotlin Language.
Step 1. build.gradle
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "com.pratap.kotlinrecyclerview"
        minSdkVersion 15
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    implementation 'com.android.support:design:26.1.0'
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support:recyclerview-v7:26.1.0'
    implementation 'com.android.support:cardview-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}
Step 2. Create a class Student.kt
create model class in kotlin like below
data class Student(val name: String, val email: String)
Step 3. Create a class MainActivity.kt
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val recyclerView: RecyclerView = findViewById(R.id.recyclerView)
        //adding a layoutmanager
        recyclerView.layoutManager = LinearLayoutManager(this, LinearLayout.VERTICAL, false)

        //crating an arraylist to store users using the data class user
        val users = ArrayList<Student>()

        //adding some dummy data to the list
        for (i in 1..10) {
            users.add(Student("Student " + i, "Student" + i + "@gmail.com"))
        }

        //creating our adapter
        val adapter = StudentsAdapter(users)
        //now adding the adapter to recyclerview
        recyclerView.adapter = adapter

    }
}
Step 4. Creat a layout activity_main.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="match_parent">
    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
</LinearLayout>
Step 5. Create a custom layout recyclerview list_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.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:foreground="?android:attr/selectableItemBackground"
        >
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <TextView
                android:id="@+id/txt_name"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="5dp"
                android:text=""
                android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium" />
            <TextView
                android:id="@+id/txt_email_id"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="5dp"
                android:text=""
                android:textAppearance="@style/Base.TextAppearance.AppCompat.Small" />
        </LinearLayout>
    </android.support.v7.widget.CardView>
</LinearLayout>
Step 6. Custom adapter recyclerview StudentsAdapter.kt
class StudentsAdapter(val studentList: ArrayList<Student>) : RecyclerView.Adapter<StudentsAdapter.ViewHolder>() {

    //this method is returning the view for each item in the list
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): StudentsAdapter.ViewHolder {
        val v = LayoutInflater.from(parent.context).inflate(R.layout.list_row, parent, false)
        return ViewHolder(v)
    }
    //this method is binding the data on the list
    override fun onBindViewHolder(holder: StudentsAdapter.ViewHolder, position: Int) {
        holder.bindItems(studentList[position])
    }
    //this method is giving the size of the list
    override fun getItemCount(): Int {
        return studentList.size
    }

    class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
        fun bindItems(student: Student) {
            val txt_name: TextView = itemView.findViewById(R.id.txt_name)
            val txt_email_id: TextView = itemView.findViewById(R.id.txt_email_id)
            txt_name.text = student.name
            txt_email_id.text = student.email

            //set the onclick listener for the list item
            itemView.setOnClickListener({
                Toast.makeText(itemView.context, student.name + "\n" + student.email, Toast.LENGTH_LONG).show();
            })
        }
    }
}
Result:
How to create recycleview using kotin in android studio
Related Posts
Diệp Quân
Nguyen Manh Cuong is the author and founder of the vmwareplayerfree blog. With over 14 years of experience in Online Marketing, he now runs a number of successful websites, and occasionally shares his experience & knowledge on this blog.
SHARE

Related Posts

Subscribe to get free updates

Post a Comment

Sticky