Должен ли я изменить существующий список в моем приложении на RecyclerView?

Есть ли преимущества преобразования существующего списка в моем приложении в RecyclerView? Также, когда я должен использовать RecyclerView?

Это сложный вопрос. Прежде всего: подумайте о RecyclerView как о преемнике AdapterViews который поставляется с AdapterViews количеством полезных улучшений, особенно в области анимации для каждого элемента. На самом деле это то, что говорят Документы :

RecyclerView – это более продвинутая и гибкая версия ListView. Этот виджет представляет собой контейнер для больших наборов представлений, которые можно перерабатывать и прокручивать очень эффективно. Используйте виджет RecyclerView, когда у вас есть списки с элементами, которые изменяются динамически.

У вас также есть гибкость для определения настраиваемых менеджеров макетов и анимаций для этого виджета.

Поэтому в будущем мы, вероятно, больше не будем использовать ListViews . Кроме того, RecyclerView не нуждается в чем-то вроде "notifyDataSetChanged()" когда элемент добавляется или удаляется из вашего списка, что значительно улучшает производительность.
Если вы хотите узнать больше, что Google означает, говоря «более продвинутая и гибкая версия ListView», я бы рекомендовал вам прочитать этот блог-пост «Первый взгляд на Android RecyclerView» .

Но чтобы ответить на ваши вопросы:

Есть ли преимущества преобразования существующего списка в моем приложении в RecyclerView?
Да. Как уже говорилось, RecyclerView намного более гибкий и поставляется с удобной анимацией без каких-либо затрат. (С точки зрения выполнения этого самостоятельно)

Когда я должен использовать RecyclerView?
Везде, где ListView является подходящим, также является RecyclerView.

И еще вопрос:
Нужно ли переключиться с ListView на RecyclerView?
На данный момент абсолютно нет! Вы должны учитывать, что RecyclerView не является окончательным на данный момент. Таким образом, в ближайшем будущем могут быть некоторые изменения, исправления ошибок и новые функции. (В качестве примера для ошибки: clipToPadding не работает atm. К счастью, об этом уже сообщалось )

Я попытаюсь дать подробный ответ на ваш вопрос.

С появлением Android Lollipop, RecyclerView официально принялся официально. RecyclerView намного мощнее, гибко и значительно улучшает работу над ListView . Я попытаюсь дать вам подробное представление об этом.

1) Шаблон ViewHolder

В ListView было рекомендовано использовать шаблон ViewHolder, но это никогда не было принуждением. В случае RecyclerView это обязательно, используя класс RecyclerView.ViewHolder . Это одно из основных различий между ListView и RecyclerView.

Это делает вещи немного сложнее в RecyclerView, но многие проблемы, с которыми мы столкнулись в ListView, решаются эффективно.

решение суда

Если вы уже используете шаблон ViewHolder в ListViews, то при переключении на RecyclerView изменений не будет.

2) LayoutManager

Это еще одно массовое усовершенствование, появившееся в RecyclerView. В ListView единственным доступным видом является вертикальный ListView. Нет никакого официального способа даже реализовать горизонтальный ListView.

Теперь, используя RecyclerView, мы можем иметь

I) LinearLayoutManager – который поддерживает как вертикальные, так и горизонтальные списки,

Ii) StaggeredLayoutManager – который поддерживает Pinterest как шахматные списки,

Iii) GridLayoutManager – который поддерживает отображение гридов в приложениях Gallery.

И самое лучшее, что мы можем делать все это динамически, как мы хотим.

решение суда

Если ваше приложение требует такой динамической функции, я настоятельно рекомендую вам использовать RecyclerView. Есть и другие способы сделать это, но использование RecyclerView – самый простой способ.

3) Аниматор предметов

ListViews не хватает поддержки хорошей анимации, но RecyclerView привносит в нее совершенно новое измерение. Используя класс RecyclerView.ItemAnimator , анимация представлений становится настолько простой и интуитивно понятной.

решение суда

Мы также можем анимировать элементы ListView, и это тоже не так сложно, поэтому нет сильной причины для переключения.

4) Украшение предметов

В случае ListViews динамически украшающие элементы, такие как добавление границ или разделителей, никогда не были легкими. Но в случае RecyclerView класс RecyclerView.ItemDecorator дает огромный контроль разработчикам, но делает вещи немного более трудоемкими и сложными.

решение суда

Мы также можем сделать это в ListView, и если вам не нужна такая настройка в оформлении, тогда ListView может оставаться с вами.

5) OnItemTouchListener

Перехват кликов элементов в ListView был простым, благодаря интерфейсу AdapterView.OnItemClickListener . Но RecyclerView дает гораздо больше возможностей и контроля своим разработчикам RecyclerView.OnItemTouchListener, но это немного усложняет работу разработчика.

решение суда

Это одно из самых «ненужных» сложных вещей, которые я нашел в RecyclerView, который проще в случае ListViews.

RecyclerView будет будущим, и это больше, чем ответ ListView2, и ответ @ reVeres хорошо объясняет это.

Настало время проверить документацию и сделать небольшой тест, но не время переключаться, потому что RecyclerView является поддержкой-v21, и вы не можете использовать его в производственной версии.