MainActivity.kt
package com.cfsuman.kotlintutorials
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.StaggeredGridLayoutManager
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Get the widgets reference from XML layout
val recyclerView = findViewById<RecyclerView>(R.id.recyclerView)
// initialize a mutable list of color
val colors = mutableListOf(
"Aero blue", "African violet", "Air superiority blue",
"Alice blue", "Alloy orange", "Amaranth pink",
"Amaranth red", "Android green", "Antique brass",
"Antique bronze", "Antique ruby", "Apple green",
"Aquamarine", "Arctic lime", "Arylide yellow",
"Asparagus", "Atomic tangerine"
)
// initialize staggered grid layout manager
StaggeredGridLayoutManager(
3, // span count
StaggeredGridLayoutManager.VERTICAL // orientation
).apply {
// specify the layout manager for recycler view
recyclerView.layoutManager = this
}
// finally, data bind the recycler view with adapter
recyclerView.adapter = RecyclerViewAdapter(colors)
}
}
RecyclerViewAdapter.kt
package com.cfsuman.kotlintutorials
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
class RecyclerViewAdapter(private val colors: MutableList<String>)
: RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder>() {
override fun onCreateViewHolder(
parent: ViewGroup, viewType: Int): ViewHolder {
// inflate the custom view from xml layout file
val view: View = LayoutInflater.from(parent.context)
.inflate(R.layout.custom_view,parent,false)
// return the view holder
return ViewHolder(view)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
// display the current color
holder.color.text = colors[position]
}
override fun getItemCount(): Int {
// number of items in the data set held by the adapter
return colors.size
}
class ViewHolder(itemView: View)
: RecyclerView.ViewHolder(itemView){
val color: TextView = itemView.findViewById(R.id.tvColor)
}
// this two methods useful for avoiding duplicate item
override fun getItemId(position: Int): Long {
return position.toLong()
}
override fun getItemViewType(position: Int): Int {
return position
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
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="match_parent"
android:id="@+id/rootLayout"
android:background="#DCDCDC">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
custom_view.xml
<?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:id="@+id/cardView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardBackgroundColor="#E5E4E2"
app:cardCornerRadius="8dp"
app:cardElevation="4dp"
app:cardMaxElevation="6dp"
app:contentPadding="24dp"
android:layout_margin="4dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/tvColor"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:fontFamily="sans-serif"
android:textSize="20sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>

- android kotlin - RecyclerView animation
- android kotlin - RecyclerView smooth scroll
- android kotlin - RecyclerView horizontal
- android kotlin - RecyclerView divider line
- android kotlin - RecyclerView add remove item
- android kotlin - RecyclerView GridLayoutManager example
- android kotlin - GridView selected item background color
- android kotlin - Border/divider between GridView items
- android kotlin - GridView OnItemClickListener
- android kotlin - Set CardView background color
- android kotlin - Set CardView corner radius
- android kotlin - RadioButton with image and text
- android kotlin - Get RadioGroup selected item
- android kotlin - RadioButton onClick event
- android kotlin - Bitmap set alpha