RecyclerView is a UI component in Android that allows you to efficiently display large sets of data. It is a more advanced version of ListView and GridView, and it is highly customizable and flexible. RecyclerView uses a ViewHolder pattern to improve performance and smooth scrolling, and it allows you to create complex layouts with multiple view types. RecyclerView is often used in conjunction with an adapter, which provides the data to the RecyclerView and creates the views that are displayed in the list or grid.
Here is a sample code for creating 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 lateinit var recyclerView: RecyclerView
private lateinit var adapter: MyAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
recyclerView = binding.recyclerView
recyclerView.layoutManager = LinearLayoutManager(this)
adapter = MyAdapter(getData())
recyclerView.adapter = adapter
}
private fun getData(): List<String> {
val data = mutableListOf<String>()
for (i in 1..20) {
data.add("Item $i")
}
return data
}
}
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.example.recyclerview.databinding.ItemBinding
class MyAdapter(private val data: List<String>) :
RecyclerView.Adapter<MyAdapter.ViewHolder>() {
class ViewHolder(private val binding: ItemBinding) :
RecyclerView.ViewHolder(binding.root) {
fun bind(itemData: String) {
binding.itemText.text = itemData
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val inflater = LayoutInflater.from(parent.context)
val binding = ItemBinding.inflate(inflater, parent, false)
return ViewHolder(binding)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bind(data[position])
}
override fun getItemCount(): Int {
return data.size
}
}
This code creates a RecyclerView with a custom adapter and populates it with data. The data is displayed in a simple TextView inside each item view. You can modify the code to suit your specific needs.