2016-06-28 3 views
5

私は10-15のカスタムビューとフラグメントを組み合わせて縦リストに表示します。 RecyclerViewがすべてのビューが異なるシナリオで利点があるかどうかはわかりません。 RecyclerViewは多くのボイラープレートコードを追加しているようですが、私が得る唯一の利点はアニメーションの入力/終了が簡単だと思います。Androidの異なる子供向けのScrollViewとRecyclerView

私のカスタムビュー/フラグメントは、作成時にWebサービスコールを作成します。ビジネス上の理由からWebリクエストをキャッシュしません。私の理解では、RecyclerViewは各バインディングでこれらのWebサービスコールを起動し、冗長な呼び出しと可視の待ち時間を招くことになります。これと比較して、ScrollViewはビューを一度ロードする必要があり、複数の呼び出しを避けてすべてをメモリに保持します。

私の理解は正しいですか?私は、特定のシナリオで、ScrollViewsでパフォーマンスの意味を理解する助けが必要です。

答えて

9

ScrollView

ScrollViewでは、サブビューのすべてに関係なく、画面上の視認性を、一度に作成されます。ソリューションにScrollViewを使用している場合は、最初にプレースホルダを使用して、サブビューが表示されてコンテンツが更新されるタイミングを「待機」したいと思うでしょう。また、バックグラウンドスレッドでコンテンツを取得するものを構築することもできます。これは、あなたが非常に迅速に望むより複雑になるかもしれません。

RecyclerView

RecyclerViewは、彼らが自動的に見えるようになるまで、子ビューの作成を延期することの利点を提供し、一般的なレイアウトで子ビューを再利用することができます。

お子様ごとに異なる「アイテムビュータイプ」を使用すると、RecyclerViewの「リサイクル」部分は無効になりますが、ビューがスクロールされて表示されるまで、ビューの作成を延期する利点があります。

RecyclerViewsは、アダプタとViewHoldersを使用して作業するためのかなり構造化されたパターンを提供します。 RecyclerViewには個人的には慣れていませんが、開発者がビューのキャッシュを制御できるようにするためのRecyclerView.ViewCacheExtensionもあります。

全体的に、レイトバインディング(表示されないビューを作成してロードしない)とRecyclerViewの柔軟性の利点は、おそらく良い結果をもたらすでしょう。

2

まず、ViewまたはFragment、またはその両方を使用しているものを決定する必要があります。 はFragmentと比較しないでください。実際にはFragmentはアーキテクチャと実装に関してActivityに近いものです。

第2に、View/Fragmentの一部を再利用できますか?はいの場合は、RecycleViewが大いに役立ちます。

あなたは上記のトピックについて決定した後:

私の理解では、RecyclerViewいいえ、これは、結合法真実ではありません各結合

にこれらのWebサービス 呼び出しをトリガーするということです新しいアイテムが表示(再利用または新しく作成)されるたびに呼び出されるたびに、アイテムに1回だけWeb APIを実行するアダプタを実装することができます。これが選択です。

できるだけいつでもRecycleView/ListViewに行ってください。これは、メモリフットプリントを減らし、実装を減らすのに役立ちます。ビューに大きなメモリ使用量がなく、実装の一部を再利用できない場合は、ScrollViewに行きますが、実装する前に2回考えています。

関連する問題