web-dev-qa-db-ja.com

ListViewと比較したRecyclerViewの利点は何ですか?

私はRecyclerViewを使い始めたばかりで、ヘッダー、フッター、ディバイダー、リストセレクターなどの多くの機能が欠けているのを見てきましたが、ListViewの代わりに使用することについて考え直しました。

ListViewと比較したRecyclerViewの長所と短所は何ですか? ListViewよりも複雑なビューを処理できますか?

これまでListViewを使用してきましたが、ごく少数ですが、RecyclerViewに切り替えるべきでしょうか、それとも早すぎますか?

29
EC84B4

Android Lollipopの登場により、RecyclerViewが正式に登場しました。RecyclerViewははるかに強力で柔軟性があり、ListViewを大幅に強化します。詳細な洞察を提供します。

利点

1)ViewHolderパターン

ListViewでは、ViewHolderパターンを使用することが推奨されていましたが、決して強制ではありませんでした。 RecyclerViewの場合、これは RecyclerView.ViewHolder クラスを使用して必須です。これは、ListViewとRecyclerViewの大きな違いの1つです。

RecyclerViewでは少し複雑になりますが、ListViewで直面した多くの問題は効率的に解決されます。

2)LayoutManager

これは、RecyclerViewにもたらされたもう1つの大規模な機能強化です。 ListViewで使用できるビューのタイプは、垂直ListViewのみです。水平ListViewを実装する公式の方法はありません。

RecyclerViewを使用して、

i) LinearLayoutManager -垂直リストと水平リストの両方をサポートします。

ii) StaggeredLayoutManager -スタッガードリストのようなPinterestをサポートします。

iii) GridLayoutManager -ギャラリーアプリで見られるグリッドの表示をサポートします。

そして、最良のことは、これらすべてを必要に応じて動的に実行できることです。

3)アイテムアニメーター

ListViewは優れたアニメーションをサポートしていませんが、RecyclerViewはまったく新しい次元をもたらします。 RecyclerView.ItemAnimator クラスを使用すると、ビューのアニメーション化が非常に簡単で直感的になります。

4)アイテム装飾

ListViewsの場合、境界線や仕切りを追加するなど、アイテムを動的に装飾することは簡単ではありませんでした。しかし、RecyclerViewの場合、 RecyclerView.ItemDecorator クラスは開発者に大きな制御を提供しますが、少し時間がかかり複雑になります。

5)OnItemTouchListener

AdapterView.OnItemClickListener インターフェイスのおかげで、ListViewでアイテムのクリックをインターセプトするのは簡単でした。ただし、RecyclerViewは RecyclerView.OnItemTouchListener によって開発者にはるかに強力で制御を提供しますが、開発者にとっては少し複雑になります。

欠点

i)リストビューよりもずっと複雑です。

ii)初心者がRecyclerViewを完全に理解するには、時間がかかる場合があります。

iii)コーディングライフを不必要に難しくする可能性があります。

iv)ListViewに必要な時間よりもはるかに多くの時間を費やす必要があります。

92
Aritra Roy