2014-10-26 5 views
22

Я только начал использовать RecyclerView, и я видел, что ему не хватает множества функций, таких как header, footer, divider, list selector, теперь у меня есть вторая мысль об использовании его вместо ListView.Что такое преимущества RecyclerView по сравнению с ListView?

Каковы преимущества и недостатки RecyclerView по сравнению с ListView? Может ли он обрабатывать более сложные виды, чем ListView?

Я использую ListView до сих пор и для некоторых, пора переключиться на RecyclerView или это слишком скоро?

+1

все эти функции теперь вне поля зрения, см http://www.grokkingandroid.com/first-glance -androids-recyclerview/ – pskink

ответ

79

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

Преимущества

1) ViewHolder Pattern

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

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

2) LayoutManager

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

Теперь с помощью RecyclerView, мы можем иметь

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

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

III) GridLayoutManager - который поддерживает отображение сетки, как показано в приложениях Галерея.

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

3) Пункт Аниматор

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

4) Пункт Украшение

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

5) OnItemTouchListener

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

Недостатки

I) Это путь более сложный, чем в списке.

ii) Для начинающих может потребоваться много времени, чтобы полностью понять RecyclerView.

iii) Он может излишне затруднить жизнь кодирования.

IV) Вам нужно будет тратить гораздо больше времени, чем вы когда-либо необходимо для ListView

+0

Хорошее объяснение dude :) +1 –

+0

Хорошее объяснение ... Я столкнулся с проблемой при обнаружении позиции позиции верхнего наиболее видимого вида, чтобы я мог отображать дату этого элемента во время прокрутки, как whatsapp ... любые предложения, касающиеся этого, помогут мне много ... это был кусок пирога, если бы я использовал listview ... спасибо заранее ... – srv242

+0

Если я правильно понимаю вашу проблему, то это то, что вы, возможно, захотите посмотреть, https://gist.github.com/mipreamble/b6d4b3d65b0b4775a2 2e # файл-recyclerviewpositionhelper-Java –