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

How to load data into RecyclerView from DB using RxJava? (MVP + RxJava + SQLite)

有显示项目的 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。

首先,我必须提到,只要你想从数据库加载数据,你就必须为 I/O 中速度不足导致的延迟 UI 做好准备。

我不知道你的数据有多大,但在最坏的情况下你可以一页一页地加载到内存中。然而,Android 设备并不是大数据管理的良好解决方案。

顺便说一句,在适配器内部创建可观察对象(即 View)不是一个好主意,它们必须在您的业务逻辑中创建(例如 API Service / DB or Presenter layer.

在此 repo 中,您可以找到 Android 由 MVP 开发的应用程序与 Ormlite 数据库混搭的良好示例使用 RxJavaDagger:

https://github.com/mmirhoseini/marvel

希望对您有所帮助:)