2016-10-21 41 views
1

有RecyclerViewAdapter顯示項目(這些項目已經映射到數據庫中)。如何使用RxJava從數據庫加載數據到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); 
} 

附:

  • 每個項目存儲漂亮的信息,所以我想這是壞主意,以保持RecyclerView中的所有完整的項目對象(也許我錯了???,這是okey)。
  • 我知道如何使用Rx加載後臺線程中的項目,但我很困惑,因爲這個決定。我可以在RecyclerView中創建訂閱者,並將其傳遞給發佈者層,在訂閱者層將訂閱observable並從DB發出Item。它是可接受的解決方案

回答

2

首先,我不得不提到,只要你想從數據庫加載數據,你就必須爲I/O速度不足而導致的遲緩用戶界面做好準備。

我不知道你的數據有多大,但最糟糕的情況是你可以逐頁加載到內存中。但是,Android設備不適合大數據管理。

順便說一句,創建內部適配器(即查看)可觀察到的是不是一個好主意,他們必須在你的業務邏輯(創建例如API服務/DB演示層。

在這個回購協議,你可以找到開發MVP Android應用程序的一個很好的樣本與Ormlite數據庫混搭使用RxJava匕首

https://github.com/mmirhoseini/marvel

我希望它能幫助:)

+1

謝謝你這麼多很好的例子;) –

相關問題