A Simple example to create a RecyclerView using Kotlin Language.
build.gradle[under app folder]
============
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' }
Student.kt
===========
create model class in kotlin like below
package com.pratap.kotlinrecyclerview.models /** * Created by pratap.kesaboyina on 27-11-2017. */ data class Student(val name: String, val email: String)
MainActivity.kt
===============
package com.pratap.kotlinrecyclerview import android.os.Bundle import android.support.v7.app.AppCompatActivity import android.support.v7.widget.LinearLayoutManager import android.support.v7.widget.RecyclerView import android.widget.LinearLayout import com.pratap.kotlinrecyclerview.adapters.StudentsAdapter import com.pratap.kotlinrecyclerview.models.Student 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 } }
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>
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>
StudentsAdapter.kt
==================
package com.pratap.kotlinrecyclerview.adapters /** * Created by pratap.kesaboyina on 27-11-2017. */ import android.support.v7.widget.RecyclerView import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.TextView import android.widget.Toast import com.pratap.kotlinrecyclerview.R import com.pratap.kotlinrecyclerview.models.Student 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(); }) } } }
Screenshot:
=========