Android開発者から( リストとカードの作成 ):
RecyclerViewウィジェットは、ListViewのより高度で柔軟なバージョンです。
さて、それはクールに聞こえますが、私はこの例の写真を見たとき、私はこれら二つの違いについて本当に混乱しました。
上の図はカスタムアダプタを使ってListView
で簡単に作成できます。
それで、どんな状況でRecyclerView
を使うべきですか?
RecyclerView
はListView
の改良として作成されたので、ListView
コントロールを使用して添付リストを作成できますが、RecyclerView
を使用する方が簡単です。
上/下にスクロールしながらセルを再利用 - これはListView
アダプタにView Holderを実装することで可能ですが、RecycleView
ではアダプタのデフォルトの記述方法ですが、これはオプションのことです。
リストをそのコンテナから切り離す - したがって、LayoutManager
を設定することで、実行時にリスト項目をさまざまなコンテナ(linearLayout、gridLayout)に簡単に配置できます。
例:
mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
//or
mRecyclerView.setLayoutManager(new GridLayoutManager(this, 2));
ItemAnimator
に委譲されます。RecyclerView
についての詳細がありますが、私はこれらの点が主なものだと思います。
したがって、結論として、RecyclerView
は、懸念の委任のパターンに従った「リストデータ」を処理するためのより柔軟なコントロールであり、それ自体は1つのタスク、つまりリサイクル項目のみになります。
リストビューのパフォーマンスを向上させるには、ホルダーパターンを実装する必要があります。特に、リストにいくつかの異なる種類のビューを追加する場合は、簡単にめちゃくちゃになります。
RecyclerViewはこのパターンを組み込んでいるので、めちゃくちゃにするのがより難しくなります。また、グリッドのように直線的ではないさまざまなレイアウトをより簡単に処理できるようになります。
ListView
はRecyclerView
の先祖です。 ListView
がしなかったことも、うまくいかなかったこともたくさんありました。 ListView
の欠点を集めて、問題をさまざまな分野に抽象化することで問題を解決するとしたら、リサイクル業者の見解のようなものになってしまいます。これがListViewsの主な問題点です。
View
を強制しませんでした同じ項目タイプを再利用します(ListView
で使用されているアダプタの1つを見てください。getViewメソッドを調べると、プログラマが行ごとに新しいビューを作成するのを妨げるものは何もありません) convertView
変数を介して渡されます
高価なfindViewById
の使用を妨げませんでした(上記のようにビューをリサイクルしていたとしても、開発者がfindViewById
を呼び出して子ビューの表示内容を更新することは可能でした。ViewHolder
のListViews
パターンの主な目的はfindViewById
呼び出しをキャッシュすることですただし、これはプラットフォームの一部ではないため、知っている場合にのみ利用できます。
行を表示するビューでの垂直スクロールのみをサポートします(リサイクルビューはビューの配置場所や移動方法を気にしないため、LayoutManager
に抽象化されています。したがって、Recyclerは上記のような従来のListView
をサポートできます。 GridView
、しかしそれだけにとどまらず、もっと多くのことができますが、それを実現するためにはプログラミングの作業をする必要があります。
追加/削除されるアニメーションは、考慮されたユースケースではありませんでした。これがどのように行われるかを理解するのは完全にあなた次第でした(RecyclerViewを比較してください。アダプタクラスは通知を提供します*メソッド提供v対ListViews)。
手短に言うと、RecyclerView
はListView
をより柔軟に扱うためのものですが、あなたの側でもっとコーディングをする必要があるかもしれませんが。
RecyclerView
は、同様の方法でアダプタベースのビューをレンダリングするために準備された新しいViewGroupです。これはListView and GridView
の後継であるとされており、latest support-v7 version
にあります。RecyclerView
は拡張性を念頭に置いて開発されているので、あなたが考えることができるどんな種類のレイアウトを作成することも可能ですが、少し苦労することなく。
Antonio leiva からの回答
compile 'com.Android.support:recyclerview-v7:27.0.0'
RecyclerView
は実際にListView
よりもpowerful view
です。詳しくは このページ をご覧ください。
以下は、RecyclerViewとListViewの間のいくつかの要点/相違点です。賢く電話を取ります。
ListViewが機能する場合は、移行する必要はありません。もしあなたが新しいUIを書いているなら、RecyclerViewを使った方が良いかもしれません。
RecylerViewにはViewHolderが組み込まれています。listViewのように独自に実装する必要はありません。特定のインデックスでの通知もサポート
アイテムの追加や削除のアニメーション化などは、何もしなくてもRecyclerViewにすでに実装されています。
レイアウトマネージャをRecyclerViewに関連付けることができます。これは、リサイクルビューでランダムビューを取得するために使用できます。これは、リストビューでの制限事項でした。リストビューでは、利用可能なビューのタイプは垂直リストビューのみです。水平リストビューを実装する公式な方法さえありません。今RecyclerViewを使用して、我々は持つことができます
i)LinearLayoutManager - 垂直方向と水平方向の両方のリストをサポートします。ii)StaggeredLayoutManager - Pinterestのようなスタガードリストをサポートします。iii)GridLayoutManager - Galleryアプリケーションで見られるグリッドの表示をサポートします。
そして最良のことは、必要に応じてこれらすべてを動的に実行できることです。
主な利点:
ViewHolder
は、デフォルトではListView
では使用できません。 getView()
内に明示的に作成します。 RecyclerView
にはViewholder
が組み込まれています。
リストビューに対するRecyclerViewの利点:
デフォルトでViewHolderを含みます。
簡単なアニメーション.
水平レイアウト、グリッドレイアウト、スタガードレイアウトをサポート
RecyclerViewに対するlistViewの利点:
仕切りを追加するのは簡単。
単純なプレーンリストに作り付けのarrayAdapterを使うことができます
ヘッダーとフッターをサポートします。
OnItemClickListnerをサポートします。
私が持っている最大かつ最大の違いは、ListView
はそれを作成または配置するときにアイテムの位置を探すのに対し、RecyclerView
はアイテムの種類を探すということです。同じ型で作成された別の項目がある場合、RecyclerView
はそれを再作成しません。最初のアダプタに要求し、次にリサイクルプールを要求します。リサイクルプールに「そうしたタイプを作成しました」と表示されている場合、RecyclerView
は同じタイプを作成しようとしません。 ListView
にはこの種のプール機構はありません。
上記の違いに加えて、次の点がいくつかあります。
RVは、ビューの作成とビューへのデータのバインドを分離します。 LVでは、データをバインドする前に、convertViewがnullかどうか、またはビューを作成するかどうかを確認する必要があります。そのため、RVの場合、ビューは必要なときにのみ作成されますが、LVの場合、convertviewのチェックを外すことができ、毎回ビューを作成します。
GridとListの切り替えは、LayoutManagerを使ってより簡単になりました。
単一のアイテムのみが変更された場合でも、すべてのアイテムに通知して更新する必要はありません。
LVの場合、ビューキャッシングを実装する必要がありました。デフォルトでRVに提供されています。 (ビューキャッシュとリサイクルの違いがあります。)
RVの場合はとても簡単なアイテムアニメーション。
私はRecyclerView
で少し作業をしましたが、それでもListView
を好みます。
もちろん、どちらもViewHolders
を使っているので、これは利点ではありません。
RecyclerView
はコーディングがより困難です。
RecyclerView
はヘッダーとフッターを含まないので、マイナスです。
ListView
はViewHolderを作成する必要はありません。セクションやサブヘッダーを含むリストを作成したい場合は、(ViewHolderなしで)独立した項目を作成するのが賢明です。個別のクラスを必要としません。
私の意見では、RecyclerView
は開発者の生活をより困難にしていたので、リストビューで使用されるリサイクルパターンの問題に対処するために作られました。他のすべてはあなたが多かれ少なかれ扱うことができます。例えば、私はListView
とGridView
に同じアダプターを使用しますが、両方のビューでgetView
、getItemCount
、getTypeCount
が使用されているので問題ありません。 RecyclerView
付きのListView
またはグリッドアダプタ付きのListAdapter
がすでに機能している場合、GridView
は不要です。リストビューでViewHolder
パターンが正しく実装されていれば、RecycleView
に比べて大きな改善は見られません。
そのため、効率が重要な場合は、ListViewをRecyclerViewに置き換えることをお勧めします。
RecyclerView info
RecyclerView
はAndroid 5.0 (Lollipop)
で導入されました。 サポートライブラリ に含まれています。したがって、Android APIレベル7と互換性があります。
ListView
と同様に、RecyclerView’s
の主なアイデアは、パフォーマンスに優しい方法でリスト機能を提供することです。このビューの名前の「リサイクル業者」の部分は偶然そこにありません。 RecyclerView
は、現在動作しているアイテムを実際にリサイクルできます。リサイクルプロセスは View Holder というパターンのおかげで行われます。
RecyclerViewの長所と短所
長所:
短所:
リストビュー情報
ListView
は、Androidの最初から存在しています。 API Level 1
でも利用可能であり、RecyclerView
と同じ目的があります。
ListViewの使用方法は実際には非常に簡単です。この点では、後継者とは異なります。学習曲線は、RecyclerViewの場合よりも滑らかです。したがって、把握しやすいです。 LayoutManager、ItemAnimator、DiffUtilのようなものを扱う必要はありません。
ListViewの長所と短所
長所:
ExpandableListView
の基盤です短所:
簡単な答え:あなたがたくさんのアイテムを見せたい、そしてそれらの数が動的である状況でRecyclerViewを使うべきです。 ListViewは、項目数が常に同じで画面サイズに制限がある場合にのみ使用してください。
Androidライブラリを念頭に置いて考えているため、難しいと感じています。
今日、あなたがあなた自身のアダプタを構築するのを手助けするたくさんのオプションが存在していて、あなたが選ぶことができる動的なアイテムのリストとグリッドを構築するのを簡単にします.
怖くないでRecyclerViewを試してみると、ListViewとRecyclerViewにWebからダウンロードした100項目のリストを作成して好きになることができます(UX(ユーザー)の違いがわかります)。あなたがスクロールしようとすると、おそらくあなたがそれをすることができる前にテストアプリは止まるでしょう。
簡単なアダプタを作るために、この2つのライブラリをチェックすることをお勧めします。