Ответ
ListView устарел и имеет ряд ограничений по сравнению с RecyclerView:
- Нет встроенного ViewHolder – приходится реализовывать вручную, что ведет к ошибкам и boilerplate-коду.
- Отсутствие гибкого LayoutManager – только вертикальный список, сложно сделать сетку или горизонтальный скролл.
- Нет анимаций по умолчанию – в
RecyclerViewони встроены. - Плохая оптимизация –
RecyclerViewэффективнее переиспользует View, особенно для больших списков.
Пример RecyclerView с ViewHolder:
class MyAdapter : RecyclerView.Adapter<MyAdapter.ViewHolder>() {
class ViewHolder(view: View) : RecyclerView.ViewHolder(view)
override fun onCreateViewHolder() = ViewHolder(LayoutInflater.from(context).inflate(R.layout.item, parent, false))
override fun onBindViewHolder(holder: ViewHolder, position: Int) { /*...*/ }
}