RxJava:从数据库和 return 列表中检索数据
RxJava : retrieve data from database and return a list
我在我的 Android 项目中使用 RxJava,我想使用 RxJava 异步地从 table 检索所有实体 User 并且 return 列表列表到适配器 myAdapter(Context context, List<User> users)
.
但是现在我只能有Single<User>
,我怎样才能直接获取列表并将其放入我的适配器中?
我的代码:
// here vm.getUserList() should return a List<User>
MyAdapter adapter = new MyAdapter(context, vm.getUserList());
...
在我的虚拟机中:
public Single<List<User>> getUserList() {
return Single.fromCallable(() -> myDatabaseRepository.getUsers());
}
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
}
只需要调用users方法,在相应的方法中处理success/error即可。
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
}
});
是的,这是从 database/network 中检索数据的正常方法。您从存储库公开 Observables/Singles,然后订阅它们并在 success/error 方法中接收数据以在 UI 中显示给用户。
我在我的 Android 项目中使用 RxJava,我想使用 RxJava 异步地从 table 检索所有实体 User 并且 return 列表列表到适配器 myAdapter(Context context, List<User> users)
.
但是现在我只能有Single<User>
,我怎样才能直接获取列表并将其放入我的适配器中?
我的代码:
// here vm.getUserList() should return a List<User>
MyAdapter adapter = new MyAdapter(context, vm.getUserList());
...
在我的虚拟机中:
public Single<List<User>> getUserList() {
return Single.fromCallable(() -> myDatabaseRepository.getUsers());
}
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
}
只需要调用users方法,在相应的方法中处理success/error即可。
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
}
});
是的,这是从 database/network 中检索数据的正常方法。您从存储库公开 Observables/Singles,然后订阅它们并在 success/error 方法中接收数据以在 UI 中显示给用户。