2017-09-21 1 views
5

Activityには、3つのRecyclerViewsが含まれています。私はRecyclerViewsにリモートリポジトリからのデータ(3つの異なる要求)を入力する必要があります。 Activityに複数のViewModelsを使用することもできますし、より良い解決方法(ベストプラクティス)がありますか。複数のViewModelを使用したアクティビティ

+0

GoogleのAACサンプルは、 1個のLiveDataで1個のRecyclerViewsの使用を示しました。 3つのLiveDatasを持つ3つのRecyclerViewを実行しようとするとどうなるでしょうか –

答えて

5

この場合、3つの異なるLiveDataオブジェクトを設定する1つのビューモデルを使用することをお勧めします。このようにして、3つのリクエストのうちの1つがレスポンスを取得するたびにUIが更新されます。 LiveDataでRecyclerViewを使用する方法の詳細については、Google Exampleを参照してください。

アクティビティごとに複数のビューモデルを作成すると複雑さが増し、それを行う際には何の価値も見られません。

+1

Googleの例のリンクが死んでいます。 –

+0

ありがとう、私はそれを更新しました – guglhupf

+0

@guglhupf「RecyclerViews」間の結合を減らし、それらを独立して再利用するか、別の画面に移動する能力を高めます。 –

0

the open/closed principleによれば、3種類の異なるViewModelを作成する必要があります。複雑さはさほど増えておらず、対応するRecyclerViewを別のActivityに非常に簡単に移動する能力を得ています(または再利用するだけです)。

当然のことながら、わかっていれば、RecyclerViewは再利用されるか、別の画面に移動され、ViewModelという簡単な解決策に進むことができます。

ViewModel(3つのリストであっても)は常に非常にシンプルになります(LiveDataのフィールドは3つあります)。このルールを破ることができます。

しかし、O/CPの違反は良い習慣ではありません。それは意識的なルールの破りです。

関連する問題