我对RxJava/RxAndroid还不熟悉,但我的用例有困难。
我尝试迭代一个 List<A>
,将每个 A
异步转换为一个 B
(因为需要调用数据库),并且我的 Observer
应该在每次成功转换时(在 onNext()
中)通知执行一些主线程上的任务。
我成功地完成了整个列表的转换,然后在 onNext()
中收到了我的 List<B>
,但我需要在每个条目完成时得到通知,而不是等所有项目都完成后再通知我。
我尝试使用操作符 from
,但如果我使用 from(List<A>)
,我的 Observer
必须接收来自同一类型(A
而不是 B
)的对象。
这是我将整个 List<A>
转换为 List<B>
的代码。我应该在这里做出什么改变?
private List<A> listOfA;
private startConversion() {
Observer observer = new Observer<List<B>>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
e.printStackTrace();
}
@Override
public void onNext(List<B> convertedItems) {
onConversionCompleted(convertedItems);
}
};
Observable<B> observervable = Observable.fromCallable(new Callable<List<B>>() {
@Override
public List<B> call() throws Exception {
return convertListOfAToListOfB(listOfA);
}
});
subscription = observable
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(observer);
}
PS:这是伪代码。
感谢帮助!