我在我的Android项目中使用RxJava,我希望异步地从使用RxJava的表中检索所有实体用户,并将列表返回给适配器myAdapter(Context context, List<User> users)
。
但是现在我只能拥有Single<User>
,如何才能直接获得列表并将其放入适配器中呢?
我的代码:
// here vm.getUserList() should return a List<User>
MyAdapter adapter = new MyAdapter(context, vm.getUserList());
...
在我的vm中:
public Single<List<User>> getUserList() {
return Single.fromCallable(() -> myDatabaseRepository.getUsers());
}
发布于 2019-06-27 04:59:58
您只需要调用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
}
});
是的,这是从数据库/网络检索数据的正常方式。您可以从存储库中公开可观察性/单变量,然后订阅它们并接收成功/错误方法中的数据,以便在UI中显示给用户。
发布于 2019-06-27 03:50:17
private void fetchUser() {
('function returning Single<List<User>>').subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::onSuccess, this::onFail);
}
private void onSuccess(List<User> users) {
//handle user model here
}
private void onFail(Throwable t) {
//handle error here
}
https://stackoverflow.com/questions/56790188
复制相似问题