Android RxJava:从数据库检索数据并返回列表

Android RxJava:从数据库检索数据并返回列表,android,rx-java,rx-java2,Android,Rx Java,Rx Java2,我在Android项目中使用RxJava,我希望使用RxJava异步检索表中的所有用户实体,并将列表返回到适配器myAdapter(上下文,列表用户) 但是现在我只能使用单个,如何直接获取列表并将其放入适配器中 我的代码: // here vm.getUserList() should return a List<User> MyAdapter adapter = new MyAdapter(context, vm.getUserList()); ... //这里vm.getUse

我在Android项目中使用RxJava,我希望使用RxJava异步检索表中的所有用户实体,并将列表返回到适配器
myAdapter(上下文,列表用户)

但是现在我只能使用
单个
,如何直接获取列表并将其放入适配器中

我的代码:

// here vm.getUserList() should return a List<User>
MyAdapter adapter = new MyAdapter(context, vm.getUserList());
...
//这里vm.getUserList()应该返回一个列表
MyAdapter=新的MyAdapter(上下文,vm.getUserList());
...
在我的虚拟机中:

public Single<List<User>> getUserList() {
    return Single.fromCallable(() -> myDatabaseRepository.getUsers());
}
publicssinglegetuserlist(){
返回Single.fromCallable(()->myDatabaseRepository.getUsers());
}
private void fetchUser(){
('function returning Single').subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::onSuccess,this::onFail);
}
私有void onSuccess(列出用户){
//在这里处理用户模型
}
私有void onFail(可丢弃的t){
//在这里处理错误
}

您只需要调用users方法并在相应的方法中处理成功/错误

getUserList()
   .subscribeOn(Schedulers.io())
   .observeOn(AndroidSchedulers.mainThread())
   .doOnSuccess(new Consumer<List<User>>() {
      @Override
      public void accept(List<User> users) throws Exception {
         // fill adapter
         MyAdapter adapter = new MyAdapter(context, users);
      }
   })
   .doOnError(new Consumer<Throwable>() {
      @Override
      public void accept(Throwable throwable) throws Exception {
         // handle error
      }
   });
getUserList()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnSuccess(新消费者(){
@凌驾
public void accept(列表用户)引发异常{
//填充适配器
MyAdapter=新的MyAdapter(上下文,用户);
}
})
.doOnError(新使用者(){
@凌驾
public void accept(Throwable Throwable)引发异常{
//处理错误
}
});

是的,这是从数据库/网络检索数据的正常方式。您可以从存储库中公开可观察对象/单一对象,然后订阅它们,并通过成功/错误方法接收数据,以显示在用户界面中。

您可以发布当前代码吗?帮助您会更容易。@Jaime Suárez Hi我发布了我的代码请检查我想直接将列表传递到我的适配器中,而不传递onSuccess(),这可能吗?事实上,适配器应该搜索列表,而不是相反的列表。您是如何获得您所提到的单身的?它实际上应该是单身的,这样您就可以在RxJava的onSuccess方法回调中获得列表。然后您可以通知适配器hi,我使用return Single.fromCallable(()->myDatabaseRepository.getUsers())获取Single;确切地因此,请使用我发布的代码中返回单个的方法。我将相应地编辑代码。
getUserList()
   .subscribeOn(Schedulers.io())
   .observeOn(AndroidSchedulers.mainThread())
   .doOnSuccess(new Consumer<List<User>>() {
      @Override
      public void accept(List<User> users) throws Exception {
         // fill adapter
         MyAdapter adapter = new MyAdapter(context, users);
      }
   })
   .doOnError(new Consumer<Throwable>() {
      @Override
      public void accept(Throwable throwable) throws Exception {
         // handle error
      }
   });