Here is a sample code for implementing a RecyclerView in Kotlin using ViewBinding:
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import com.example.recyclerview.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private val itemList = mutableListOf<String>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
// Add items to the list
itemList.add("Item 1")
itemList.add("Item 2")
itemList.add("Item 3")
itemList.add("Item 4")
itemList.add("Item 5")
// Set up the RecyclerView
val adapter = RecyclerViewAdapter(itemList)
binding.recyclerView.adapter = adapter
binding.recyclerView.layoutManager = LinearLayoutManager(this)
}
}
class RecyclerViewAdapter(private val itemList: MutableList<String>) :
RecyclerView.Adapter<RecyclerViewAdapter.ItemViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
val binding =
ItemLayoutBinding.inflate(LayoutInflater.from(parent.context), parent, false)
return ItemViewHolder(binding)
}
override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
holder.bind(itemList[position])
}
override fun getItemCount(): Int {
return itemList.size
}
inner class ItemViewHolder(private val binding: ItemLayoutBinding) :
RecyclerView.ViewHolder(binding.root) {
fun bind(item: String) {
binding.itemText.text = item
}
}
}
Make sure to add the necessary dependencies in your app-level build.gradle file:
dependencies {
//...
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.android.support:cardview-v7:28.0.0'
//...
}
That's it! You now have a basic RecyclerView implemented in your app using ViewBinding and Kotlin.
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import com.example.recyclerview.databinding.ActivityMainBinding
import com.example.recyclerview.databinding.ItemLayoutBinding
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private val itemList = mutableListOf<Item>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
// Add items to the list
itemList.add(Item("Item 1", "Description 1"))
itemList.add(Item("Item 2", "Description 2"))
itemList.add(Item("Item 3", "Description 3"))
itemList.add(Item("Item 4", "Description 4"))
itemList.add(Item("Item 5", "Description 5"))
// Set up the RecyclerView
val adapter = RecyclerViewAdapter(itemList)
binding.recyclerView.adapter = adapter
binding.recyclerView.layoutManager = LinearLayoutManager(this)
}
}
data class Item(val title: String, val description: String)
class RecyclerViewAdapter(private val itemList: MutableList<Item>) :
RecyclerView.Adapter<RecyclerViewAdapter.ItemViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
val binding =
ItemLayoutBinding.inflate(LayoutInflater.from(parent.context), parent, false)
return ItemViewHolder(binding)
}
override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
holder.bind(itemList[position])
}
override fun getItemCount(): Int {
return itemList.size
}
inner class ItemViewHolder(private val binding: ItemLayoutBinding) :
RecyclerView.ViewHolder(binding.root) {
fun bind(item: Item) {
binding.titleText.text = item.title
binding.descriptionText.text = item.description
}
}
}
Make sure to add the necessary dependencies in your app-level build.gradle file:
dependencies {
//...
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.android.support:cardview-v7:28.0.0'
//...
}
That's it! You now have a RecyclerView implemented in your app using ViewBinding, a data class, and Kotlin.