Недавно я наткнулся на android, RecyclerView
который был выпущен с Android 5.0, и кажется, что RecyclerView
это просто инкапсулированный традиционный ListView
шаблон с включенным в него шаблоном ViewHolder, который способствует повторному использованию представления, а не создает его каждый раз.
Какие еще преимущества использования RecyclerView
? Если оба имеют одинаковый эффект с точки зрения производительности, почему можно предпочесть RecyclerView`?
редактировать
Я обнаружил, что люди задавали аналогичный вопрос, и ответы не были окончательными, поэтому я добавил их сюда для ведения учета.
Стоит ли использовать RecyclerView вместо ListView?
Почему в RecyclerView нет onItemClickListener ()? и чем RecyclerView отличается от Listview?
android
performance
listview
android-recyclerview
Муштак Джамиль
источник
источник
RecyclerView
он намного быстрее и универсальнее с гораздо лучшим API. Такие вещи, как анимация добавления или удаления элементов, уже реализованы в, иRecyclerView
вам не нужно ничего делать. В этом нет никаких сомнений, выбросьте своеListView
в мусорное ведро,RecyclerView
оно здесь, чтобы украсть шоу.Ответы:
Другой плюс использования
RecycleView
- это анимация, ее можно сделать двумя строчками кода.RecyclerView.ItemAnimator itemAnimator = new DefaultItemAnimator(); recyclerView.setItemAnimator(itemAnimator);
Но виджет еще сырой, например, вы не можете создать верхний и нижний колонтитулы .
источник
HeaderViewListAdapter
и добавляет поддержку заголовков в фоновом режиме. СRecyclerView
тобой все под контролем.Хорошо, немного покопался, и я нашел эти жемчужины из статьи Билла Филипса о
RecycleView
источник
Еще из статьи Билла Филиппа (прочтите ее!), Но я подумал, что важно отметить следующее.
источник
Я использовал
ListView
с загрузчиком изображений Glide, имея прирост памяти. Тогда я заменилListView
сRecyclerView
. Это не только сложнее при кодировании, но и приводит к большему использованию памяти, чем файлListView
. По крайней мере, в моем проекте.В другом упражнении я использовал сложный список с
EditText's
. В некоторых из них способ ввода может отличаться, такжеTextWatcher
может применяться. Если бы я использовалViewHolder
, как я мог бы заменить егоTextWatcher
во время прокрутки? Итак, я использовалListView
без aViewHolder
, и он работает.источник
TextWatcher
экране было несколько секунд. Возможно, вы правы, но я не могу это проверить.Повторное использование ячеек при прокрутке вверх / вниз - это возможно с использованием View Holder в адаптере listView, но это необязательно, а в RecycleView это способ записи адаптера по умолчанию.
Отделяет список от своего контейнера, поэтому вы можете легко помещать элементы списка во время выполнения в разные контейнеры (linearLayout, gridLayout) с помощью настройки LayoutManager.
Пример:
mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view); mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); //or mRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); mRecyclerView.setLayoutManager(new GridLayoutManager(this, 3));
Анимирует общие действия со списком.
Анимации разъединены и делегированы
ItemAnimator
.О RecyclerView есть еще кое-что, но я думаю, что это основные моменты.
LayoutManager
i) LinearLayoutManager - который поддерживает как вертикальные, так и горизонтальные списки,
ii) StaggeredLayoutManager - который поддерживает Pinterest, например, шахматные списки,
iii) GridLayoutManager - который поддерживает отображение сеток, как в приложениях галереи.
И самое лучшее, что мы можем делать все это динамически, как хотим.
источник
RecyclerView был создан как улучшение ListView, поэтому да, вы можете создать прикрепленный список с помощью элемента управления ListView, но использовать RecyclerView проще, так как:
Повторное использование ячеек при прокрутке вверх / вниз : это возможно с помощью реализации View Holder в адаптере ListView, но это необязательно, а в RecycleView это способ записи адаптера по умолчанию.
Отделяет список от своего контейнера : поэтому вы можете легко помещать элементы списка во время выполнения в разные контейнеры (linearLayout, gridLayout) с помощью настройки LayoutManager.
Итак, в заключение, RecyclerView - это более гибкий элемент управления для обработки «данных списка», который следует шаблонам делегирования задач и оставляет себе только одну задачу - переработку элементов.
источник
Если вы используете RecycleView, сначала вам нужно больше усилий для настройки. Вам нужно уделить больше времени настройке простого элемента при нажатии, границе, событии касания и других простых вещах. Но конечный продукт будет идеальным.
Так что решение за вами. Я предлагаю, если вы создаете простое приложение, такое как загрузка телефонной книги, где достаточно простого щелчка по элементу, вы можете реализовать просмотр списка. Но если вы проектируете как домашнюю страницу социальных сетей с неограниченной прокруткой. Несколько разных украшений между элементами, больший контроль над отдельным элементом, чем при использовании режима повторного использования.
источник