如何使用RxJava从DB加载数据到RecyclerView? (MVP + RxJava + SQLite)

时间:2016-10-21 21:36:16

标签: android sqlite android-recyclerview rx-java mvp

有RecyclerViewAdapter显示项目(此项目已在数据库中映射)。

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中保留所有完整的项目对象是个坏主意(也许我错了???这就是okey)。
  • 我知道如何使用Rx在后台线程中加载项目,但我对此决定感到困惑。我可以在RecyclerView中创建订阅者并将其传递给presenter层,在那里它将订阅observable,它将从DB发出Item。这是否可以接受?

1 个答案:

答案 0 :(得分:2)

首先,我必须提一下,只要您想从数据库加载数据,您就必须为I / O速度不足导致的滞后UI做好准备。

我不知道您的数据有多大,但在最坏的情况下,您可以逐页将其加载到内存中。但是,Android设备不适合大数据管理。

顺便说一下,创建可观察的内部适配器(即查看)并不是一个好主意,必须在您的业务逻辑中创建它们(例如 API服务 / DB Presenter 图层。

在这个回购中,你可以找到一个很好的Android应用程序样本,由 MVP 开发,使用 Ormlite 数据库混搭使用 RxJava 匕首

  

https://github.com/mmirhoseini/marvel

我希望它有所帮助:)