От разработчика Android ( Создание списков и карт ):
Виджет RecyclerView - это более продвинутая и гибкая версия ListView.
Хорошо, это звучит круто, но когда я увидел этот пример изображения, я действительно запутался в разнице между этими двумя.
Изображение выше может быть легко создано с ListView
помощью специального адаптера.
Итак, в какой ситуации следует использовать RecyclerView
?
android
listview
android-recyclerview
Blaze Tama
источник
источник
Ответы:
RecyclerView
был создан какListView
улучшение, так что да, вы можете создать прикрепленный список сListView
контролем, но использоватьRecyclerView
его проще:Повторное использование ячеек при прокрутке вверх / вниз - это возможно при реализации View Holder в
ListView
адаптере, но это было необязательным, а вRecycleView
стандартном способе написания адаптера.Разъединяет список из его контейнера - так что вы можете легко помещать элементы списка во время выполнения в различные контейнеры (linearLayout, gridLayout) с настройкой
LayoutManager
.Пример:
ItemAnimator
.Существует больше о
RecyclerView
, но я думаю, что эти пункты являются основными.Итак, в заключение следует отметить,
RecyclerView
что существует более гибкий элемент управления для обработки «списочных данных», который следует шаблонам делегирования проблем и оставляет для себя только одну задачу - утилизацию предметов.источник
Чтобы представления списка имели хорошую производительность, вам необходимо реализовать шаблон держателя, и это легко испортить, особенно если вы хотите заполнить список несколькими видами.
RecyclerView заполняет этот шаблон, делая его более сложным. Он также более гибкий, что облегчает работу с различными макетами, которые не являются прямолинейными, как сетка.
источник
ListView
является предкомRecyclerView
. Было много вещей, которыеListView
либо не делали, либо не делали хорошо. Если бы вы собрали недостаткиListView
и решили проблему путем абстрагирования проблем в разные области, вы бы получили нечто вроде представления переработчика. Вот основные проблемы с ListViews:Не применял
View
повторное использование для одних и тех же типов элементов (посмотрите на один из адаптеров, которые используются в aListView
, если вы изучите метод getView, вы увидите, что ничто не мешает программисту создавать новое представление для каждой строки, даже если оно передается в черезconvertView
переменную)Не препятствовали дорогостоящему
findViewById
использованию (даже если вы перерабатывали представления, как отмечалось выше, разработчики могли вызыватьfindViewById
обновления отображаемого содержимого дочерних представлений. Основная цельViewHolder
шаблонаListViews
заключалась в кэшированииfindViewById
вызовов. Однако это было только доступно, если вы знали об этом, поскольку он вообще не был частью платформы)Поддерживается только вертикальная прокрутка с отображением строк (представление Recycler не заботится о том, где размещены представления и как они перемещаются, оно абстрагировано в a
LayoutManager
. Поэтому Recycler может поддерживать традиционный,ListView
как показано выше, а также такие вещи, какGridView
, но это не ограничивается этим, оно может сделать больше, но вы должны выполнить работу по программированию, чтобы это произошло).Анимации для добавления / удаления не рассматривались как вариант использования. Это было полностью зависит от вас, чтобы выяснить, как это сделать (сравните RecyclerView. Классы адаптера уведомляют * предложения методов v. ListViews, чтобы получить представление).
Короче говоря
RecyclerView
, это более гибкий подходListView
, хотя с вашей стороны может потребоваться больше кодирования.источник
Ответ взят от Антонио Лейва
RecyclerView
это действительно,powerful view
чемListView
. Для более подробной информации вы можете посетить эту страницу .источник
Ниже приведены несколько ключевых моментов / различий между RecyclerView и ListView. Примите ваш звонок с умом.
источник
Основное преимущество:
ViewHolder
по умолчанию недоступно вListView
. Мы будем создавать явно внутриgetView()
.RecyclerView
имеет встроенныйViewholder
.источник
В дополнение к вышеперечисленным различиям немного больше:
RV разделяет создание представления и привязку данных к представлению. В LV необходимо проверить, является ли convertView нулевым или нет для создания представления, прежде чем связывать с ним данные. Таким образом, в случае RV представление будет создаваться только тогда, когда это необходимо, но в случае LV можно пропустить проверку для convertview и создавать представление каждый раз.
Переключение между сеткой и списком стало проще с LayoutManager.
Нет необходимости уведомлять и обновлять все элементы, даже если изменен только один элемент.
Нужно было реализовать кэширование представлений в случае LV. Это предусмотрено в RV по умолчанию. (Существует разница между кэшированием и переработкой.)
Очень простая анимация предметов в случае RV.
источник
Преимущества RecyclerView перед просмотром по списку:
Содержит ViewHolder по умолчанию.
Простая анимация.
Поддерживает горизонтальные, сеточные и разнесенные макеты
Преимущества listView по сравнению с recyclerView:
Легко добавить разделитель.
Может использовать встроенный arrayAdapter для простых простых списков
Поддерживает верхний и нижний колонтитулы.
Поддерживает OnItemClickListner.
источник
recyclerView.addItemDecoration(new DividerItemDecoration(getContext(), LinearLayoutManager.VERTICAL));
после выполнения что-то вродеrecyclerView = view.findViewById(R.id.feed);
8 различий между RecyclerView и ListView
1. Шаблон ViewHolder
Шаблон, используемый для сокращения вызовов методов findViewById () .
В ListView вы можете легко построить список без использования ViewHolder. Но не в случае с RecyclerView.
2. Адаптер
Оба они являются AdapterViews, да. Работает на основе класса адаптера.
Построить ListView легко, используя адаптеры по умолчанию, такие как ArrayAdapter, CursorAdapter, но RecyclerView предоставляет класс RecyclerView.Adapter, чтобы создать новый пользовательский класс адаптера.
Вы не можете использовать ArrayAdapter или любой другой встроенный адаптер с RecyclerView.
3. Расположение предметов
Я создал Vertical ListView в простом и менее кода. Но что, если нам нужно создать GridView?
RecyclerView использует LayoutManager для упорядочивания своих элементов. Есть 3 класса LayoutManager.
Анимации
В ListView отсутствуют базовые анимации. Но RecyclerView поставляется с простой анимацией.
делитель
Андроид: делитель и Android: dividerHeight атрибуты или setDivider (), setDividerHeight () позволяет сделать пользовательский делитель в ListView.
с 25.1.0 класс DividerItemDecoration можно использовать для создания простого делителя.
Нажмите События
В RecyclerView отсутствует OnItemClickListener , да, это очень печально. Но они дают больше контроля разработчику, предоставляя RecyclerView.OnItemTouchListener.
Методы уведомления
Вам необходимо вызвать соответствующие методы notify * для выполнения правильной анимации. RecylcerView имеет много методов notify * при сравнении с ListView.
источник
Я думаю, что главное и самое большое отличие, которое у них есть, заключается в том,
ListView
что во время создания или размещения элемента он ищет положение элемента, а с другой стороныRecyclerView
- тип элемента. если есть другой элемент, созданный с тем же типомRecyclerView
, не создавайте его снова. Сначала запрашивается адаптер, а затем запрашивается вторичный пул, если в повторном пуле говорится «да, я создал тип, похожий на него», а затемRecyclerView
не пытается создать такой же тип.ListView
не имеет такого механизма объединения.источник
По моему мнению, это
RecyclerView
было сделано для решения проблемы с шаблоном повторного использования, используемым в списках, потому что это усложняло жизнь разработчика. Со всем остальным вы можете справиться более или менее. Например я использую тот же адаптер дляListView
иGridView
это не имеет значения в обоих представлениях оgetView
,getItemCount
,getTypeCount
используется так это то же самое.RecyclerView
не требуется, еслиListView
сListAdapter
илиGridView
с сеточными адаптерами уже работает для вас. Если вы правильно внедрилиViewHolder
шаблон в свои списки, вы не увидите никаких больших улучшений по сравнению с нимRecycleView
.источник
Я немного работал с
RecyclerView
и до сих пор предпочитаюListView
.Конечно, оба они используют
ViewHolders
, так что это не преимущество.А
RecyclerView
сложнее в кодировании.A
RecyclerView
не содержит верхнего и нижнего колонтитула, поэтому это минус.A
ListView
не требует создания ViewHolder. В случаях, когда вы хотите иметь список с разделами или подзаголовками, было бы неплохо создавать независимые элементы (без ViewHolder), это проще и не требует отдельных классов.источник
Так что, если эффективность - ваша забота, тогда да, это хорошая идея заменить ListView на RecyclerView.
источник
Простой ответ: вы должны использовать RecyclerView в ситуации, когда вы хотите показать много элементов, а их число является динамическим. ListView следует использовать только тогда, когда количество элементов всегда одинаково и ограничено размером экрана.
Вам труднее, потому что вы думаете только с учетом библиотеки Android.
Сегодня существует множество опций, которые помогают вам создавать собственные адаптеры, упрощая создание списков и сеток динамических элементов, которые вы можете выбирать, изменять порядок, использовать анимацию, разделители, добавлять нижние колонтитулы, верхние колонтитулы и т. Д. И т. Д. И т. Д.
Не пугайтесь и попробуйте RecyclerView, вы можете начать любить его, сделав список из 100 элементов, загруженных из Интернета (например, новости Facebook) в ListView и RecyclerView, вы увидите разницу в UX (пользователь опыт), когда вы пытаетесь прокрутить, вероятно, тестовое приложение остановится, прежде чем вы даже можете сделать это.
Я рекомендую вам проверить эти две библиотеки для создания простых адаптеров:
FastAdapter от mikepenz
FlexibleAdapter от davideas
источник
RecyclerПросмотреть информацию
RecyclerView
Был введен сAndroid 5.0 (Lollipop)
. он включен в библиотеку поддержки . Таким образом, он совместим с Android API Level 7.Точно так же к
ListView
,RecyclerView’s
основная идея заключается в том, чтобы обеспечить листинг функциональности в производительности дружественной манере. Часть «Recycler» в названии этой точки зрения не случайно.RecyclerView
Может фактически переработать пункты , с которыми он в настоящее время работает. Процесс переработки осуществляется благодаря шаблону под названием View Holder .Плюсы и минусы RecyclerView
Плюсы:
Минусы:
Информация о ListView
Это
ListView
было вокруг с самого начала Android. Он был доступен даже вAPI Level 1
и имеет ту же цель, что иRecyclerView
.Использование ListView на самом деле очень просто. В этом аспекте это не похоже на его преемника. Кривая обучения более плавная, чем у RecyclerView. Таким образом, это легче понять. Нам не нужно иметь дело с такими вещами, как LayoutManager, ItemAnimator или DiffUtil.
Плюсы и минусы ListView
Плюсы:
ExpandableListView
Минусы:
источник
Есть много различий между ListView и RecyclerView, но вы должны знать следующее, в частности:
источник