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