【发布时间】:2015-05-12 23:11:15
【问题描述】:
我是 RxJava 新手,需要一些关于如何执行以下操作的帮助/指导:
我需要从 Observable 中获取两个值
- 一个字符串
- 一个列表<.objecta>
然后我需要在这个列表上应用两个不同的过滤器(),然后 最后将它们(String,FilteredListA,FilteredListB)组合成 单个可观察对象。
我可以使用单个链接调用吗???(可能需要 groupBy 的示例)
以下是执行相同操作的示例代码。
MasterObject = String, List<.ObjectA>
Observable<ReturnObject> getReturnObject() {
Observable<MasterObject> masterObjectObservable = getMasterObjectObservable();
Observable<String> myStringbservable = masterObjectObservable.map(new Func1<MasterObject, String>() {
@Override
public String call(MasterObject masterObject) {
return masterObject.getString();
}
});
return masterObjectObservable.flatMap(new Func1<MasterObject, Observable<ObjectA>>() {
@Override
public Observable<MasterObject> call(MasterObject masterObject) {
return Observable.from(masterObject.getList());
}
}).filter(new Func1<ObjectA, Boolean>() {
@Override
public Boolean call(ObjectA objectA) {
return objectA.isTrue();
}
}).toList().concatWith(getSecondList(masterObjectObservable)).zipWith(publicKeyObservable, new Func2<List<ObjectA>, String, ReturnObject>() {
@Override
public ReturnObject call(List<ObjectA> listObjectA, String string) {
return new ReturnObject(string, listObject);
}
});
}
private Observable<List<ObjectA>> getSecondList(Observable<MasterObject> masterObject) {
return masterObject.flatMap(new Func1<MasterObject, Observable<ObjectA>>() {
@Override
public Observable<ObjectA> call(MasterObject masterObject) {
return Observable.from(masterObject.getList());
}
}).filter(new Func1<ObjectA, Boolean>() {
@Override
public Boolean call(ObjectA objectA) {
return objectA.isCondition();
}
}).toSortedList(new Func2<ObjectA, ObjectA, Integer>() {
@Override
public Integer call(ObjectA a, ObjectA b) {
return a.getCondition()
.compareTo(b.getCondition());
}
});
}
【问题讨论】:
标签: android system.reactive rx-java