gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 19:30:10 27 4
gpt4 key购买 nike

有显示项目的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);
}

附言

  • 每个项目都存储了相当多的信息,所以我想将所有完整的项目对象保存在 RecyclerView 中是个坏主意(也许我错了???这没关系)。
  • 我知道如何使用 Rx 在后台线程中加载项目,但我对这个决定感到困惑。我可以在 RecyclerView 中创建订阅者并将其传递到展示层,在那里它将订阅到将从 DB 发出 Item 的可观察对象。这是可以接受的解决方案吗?

最佳答案

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

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

顺便说一句,在 Adapter(即 View)中创建可观察对象不是一个好主意,它们必须在您的业务逻辑中创建(例如 API Service/DBPresenter 层。

在这个 repo 中,您可以找到一个很好的 Android 应用程序示例,由 MVP 使用 Ormlite 数据库混搭使用 RxJava> Dagger :

https://github.com/mmirhoseini/marvel

希望对你有帮助:)

关于android - 如何使用 RxJava 将数据从数据库加载到 RecyclerView? (MVP + RxJava + SQLite),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40185768/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com