import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val recyclerView = findViewById<RecyclerView>(R.id.recyclerView)
recyclerView.layoutManager = LinearLayoutManager(this)
val items = List(100) { index -> "Item ${index + 1}" }
recyclerView.adapter = ItemAdapter(items)
}
}
class ItemAdapter(private val items: List<String>) : RecyclerView.Adapter<ItemAdapter.ItemViewHolder>() {
class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val textView: TextView = itemView.findViewById(android.R.id.text1)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
val view = LayoutInflater.from(parent.context)
.inflate(android.R.layout.simple_list_item_1, parent, false)
return ItemViewHolder(view)
}
override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
holder.textView.text = items[position]
}
override fun getItemCount(): Int = items.size
}This app uses RecyclerView to display a long list of 100 items efficiently. RecyclerView only creates enough item views to fill the screen plus a few extra. When you scroll, it recycles these views instead of creating new ones, which saves memory and improves performance.
The ItemAdapter class uses the ViewHolder pattern to hold references to the item views. This avoids repeatedly finding views by ID, making scrolling smooth.
Each item is a simple TextView showing "Item 1", "Item 2", and so on. This example shows how dynamic lists reuse views to display large data sets efficiently.