2016-10-21 5 views
1

アイテムを表示するRecyclerViewAdapterがあります(このアイテムは既にデータベースにマップされています)。RxJavaを使用してDBからRecyclerViewにデータをロードするには? (MVP + RxJava + SQLite)

RecyclerViewAdapterにはアイテムをロードするためのPresenterへの参照が含まれています。また、アイテムIDを持つArrayListも含まれています。

Rxを使用してアイテムをロードするにはどうすればよいですか?どのようにしてonBindViewHolderメソッドの正しいコードが見えるはずですか?

List<Long> ItemIds; 
Presenter presenter; 
public void onBindViewHolder(ViewHolder holder, int position) { 
    Long itemId = ItemIds.get(position); 
    Item item = presenter.getItemById(itemId); //loading from DB 
    holder.setContent(item); 
} 

P.S.:

今では次のようになります

  • 各項目の店はかなりドロドロ情報ので、私はこれが(多分私が間違っている???これはオーケーです)RecyclerView内のすべての完全な項目オブジェクトを維持することは悪い考えであると思います。
  • 私はRxを使ってバックグラウンドスレッドに項目をロードする方法を知っていますが、私はこの決定に混乱しています。私はRecyclerViewでサブスクライバを作成し、プレゼンタ層に渡してobservableにサブスクライブし、DBからItemを送出します。容認できる解決策ですか?

答えて

2

まず、DBからデータをロードしたいのであれば、I/Oのスピードが遅いために遅いUIの原因に備える必要があることに言及する必要があります。

あなたのデータはどれだけ大きいのか分かりませんが、最悪の場合、それをページごとにメモリに読み込むことはできます。しかし、Androidデバイスは、大規模なデータ管理には適していません。ところで

、アダプタ(すなわちビュー)の内側に観察作成は良いアイデアではなく、彼らはあなたのビジネスロジック(例えばAPIサービス/DBまたはプレゼンター層に作成する必要があります。

あなたは Ormliteデータベースのマッシュアップ RxJavaダガーを使用してMVPによって開発されたAndroidのアプリケーションの良いサンプルを見つけることができます。このレポで

https://github.com/mmirhoseini/marvel

私はそれが役立ちます:)

+1

は偉大例えばどうもありがとうございます願っています。) –

関連する問題