0

新しいAndroidアーキテクチャコンポーネントを使用してすべてのリストを設定しようとしています:Room Persistance LibraryPaging Libraryです。しかし、私は次の問題に直面しています。同じモデルの多くの異なるリストを持つアプリを想像してみてください。各リストには、サーバーへの自分のURL要求があります。いくつかの要素は、異なる応答で繰り返すことができます。ですから、私はそのモデルのテーブルに各応答のすべての要素を挿入して更新する必要があると思います。さらに、各要求にはページがあります。たとえば、elements/famous/0,elements/famous/1などです。ページ1応答は、リスト0の要素を含むリストを受信したときに、ページによって返された要素を追加する必要があります。1.異なるリクエストに応じて異なるページリストを持つページングライブラリとルーム

LivePagedListProvidedを返し

Aルームリクエストは、このようなものです:

@Query("SELECT * FROM elements") 
fun getElements(): LivePagedListProvider<Int, Model> 

すると、いくつかの要素が変更された場合、またはデータベースに追加された要素がクエリに影響する場合、LivePagedListProviderのオブザーバブルが変更を提供するため、UIが自動的に変更されます。

問題は次のとおりです。ページングライブラリを使用して異なるリクエストに応じて、異なるリストに含まれる要素を保存してどのように取得する必要がありますか?

+0

はい、そこにすべての要素を保存する部屋を使用したい –

答えて

0

受信したデータを(サーバーへの別の要求から)ローカルストレージとして使用する場合、このテーブルを更新するたびにすべてのデータソースが無効になるため、自動更新が表示されます。異なるリクエストを使用する場合は、異なるテーブルを使用できます)。 select queryは、サーバーへのリクエストの違いを表すいくつかの条件を記述することができると思います。

+0

結果モデルは同じです。しかし、私はそれぞれの要求に対して別の列を追加しなければなりません。最新のアイテム、人気のアイテム、すばらしいアイテムのようなリクエストがあると想像してください。 –

+1

@DamiaFuentesので、APIがこれらのパラメータを返す場合にのみ、各リクエスト(日付、人気、素晴らしい)によってソートを使用できます。これらのパラメータがない場合は、各要素にidを格納できる3つの追加テーブル(最新、人気、素晴らしい)を作成し、その後にdbへのクエリでこのIDを使用できます。 – Alex

+0

3つのテーブルを持つことは最適ではありません。タイプクエリの数が増えるためです。クエリとその応答をデータベースに保存されたID項目を使ってテーブルを作成します。 –

関連する問題