RecyclerView был создан как улучшенная замена
ListView. Основные отличия следующие:
1. RecyclerView переиспользует ячейки списка при скроллинге. Для реализации этой логики используется класс
ViewHolder.
В
ListView тоже можно реализовать адаптер с
ViewHolder, но это необязательно и требует написания бойлерплейт кода.
2. RecyclerView разделяет хранение данных и логику отображения. С
RecyclerView легко изменить лэйаут в рантайме, используя различные реализации абстрактного класса
LayoutManager.
3. Логика отображения анимации элементов вынесена из
RecyclerView в класс
ItemAnimator.
В целом
RecyclerView имеет более гибкий API, чем
ListView, благодаря хорошему дизайну и соответствию
принципу единственной ответсвенности.