Страницы

Поиск по вопросам

вторник, 9 октября 2018 г.

ListView vs RecyclerView

Не так давно начал писать под android и использовал всегда ListView, после чего отдал свой код на проверку и мне сказали что использовать ListView "не камильфо", увы не обосновали почему. Чем они так кординально отличаются и чем RecyclerView лучше ListView?


Ответ

RecyclerView новый вид ViewGroup подготовленный для интерпретации одинаковым способом любых view использующих адаптеры . Предполагается, что он будет наследником ListView и GridView. Одна из причин заключается в том, что RecyclerView имеет более расширяемый фрэймворк, тем более что он предоставляет возможность осуществлять как горизонтальную, так и вертикальную компоновку. Используйте RecyclerView когда у вас есть наборы данных, элементы которого меняются во время выполнения на основе действий пользователя или событий сети.
RecyclerView отличается от своего предшественника Listview в первую очередь из-за следующих особенностей:
1) необходимость применения ViewHolder в адаптере - адаптеры Listview не требуют использования паттерна ViewHolder для повышения производительности. В отличие от этого, исполнение адаптера для RecyclerView требует использования паттерна ViewHolder;
2) Настраиваемые слои элементов - Listview может располагать элементы только в вертикальном линейном порядке и это не может быть изменено. В отличие от Listview ,RecyclerView имеет RecyclerView.Layoutmanager, который позволяет любое размещение элементов, включая горизонтальные списки или сетки в шахматном порядке;
3) Легкая анимация элементов - Listview не содержит никаких специальных механизмов, посредством которых можно анимировать добавление или удаление элементов. В отличие от Listview ,RecyclerView имеет RecyclerView.ItemAnimator, который позволяет управлять анимацией;
4) Устанавливаемый вручную источник данных - в Listview были адаптеры для различных источников, таких как адаптер массива и CursorAdapter для массивов и базы данных соответственно. В отличие от них RecyclerView.Adapter требует пользовательской реализации доставки данных к адаптеру;
5) Ручное декорирование элементов – ListView имеет android:divider для легкого разделения элементов в списке. В отличие от Listview ,RecyclerView имеет RecyclerView.ItemDecoration, который обеспечивает более широкие возможности по декорированию разделения;
6) Определение нажатия на элемент - ListView имеет AdapterView.OnItemClickListener интерфейс для связывания событий нажатия с конкретным элементом списка. В отличие от Listview ,RecyclerView поддерживает только RecyclerView.OnItemTouchListener который управляет отдельными событиями нажатия, но не имеет встроенного управления нажатием.

Комментариев нет:

Отправить комментарий