Почему нельзя просто использовать ListView

«Почему нельзя просто использовать ListView» — вопрос из категории UI и Views, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

ListView устарел и имеет ряд ограничений по сравнению с RecyclerView:

  1. Нет встроенного ViewHolder – приходится реализовывать вручную, что ведет к ошибкам и boilerplate-коду.
  2. Отсутствие гибкого LayoutManager – только вертикальный список, сложно сделать сетку или горизонтальный скролл.
  3. Нет анимаций по умолчанию – в RecyclerView они встроены.
  4. Плохая оптимизация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) { /*...*/ }
}