在rxjava android中是否可以在订阅服务器的onNext()中获取2个值?
我有一个可以观察到的在rxjava android中是否可以在订阅服务器的onNext()中获取2个值?,android,rx-java,Android,Rx Java,我有一个可以观察到的 Observable.zip(observable, extObs, new Func2<List<UserProfile>, ArrayList<Extension>, UserProfile>() { @Override public UserProfile call(List<UserProfile> userProfiles, ArrayList<Extension> ext
Observable.zip(observable, extObs, new Func2<List<UserProfile>, ArrayList<Extension>, UserProfile>() {
@Override
public UserProfile call(List<UserProfile> userProfiles, ArrayList<Extension> extensions) {
return userProfiles.get(0);
}
}).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).unsubscribeOn(Schedulers.io()).subscribe(new Subscriber<UserProfile>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
e.printStackTrace();
}
@Override
public void onNext(UserProfile userProfile) {
profileListener.onProfileSet(userProfile);
}
});
}
Observable.zip(Observable,extrobs,new Func2(){
@凌驾
公共用户配置文件调用(列出用户配置文件、ArrayList扩展){
返回userProfiles.get(0);
}
}).subscribeeon(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).unsubscribeen(Schedulers.io()).subscribe(new Subscriber()){
@凌驾
未完成的公共无效(){
}
@凌驾
公共无效申报人(可丢弃的e){
e、 printStackTrace();
}
@凌驾
public void onNext(UserProfile UserProfile){
onProfileSet(userProfile);
}
});
}
我需要在方法profileListener.onProfileSet(userProfile)中传递ArrayList
asprofileListener.onProfileSet(userProfile,扩展名)代码>
是否可以在zip中执行此操作,或者是否有其他rxjava方法可以解决此类问题?您必须完全按照评论中的建议执行
例如:
创建一个类,该类将表示观察结果的组合结果:
如果不能这样做,那么可以创建一个新的对象类来保存概要文件和扩展
class CombinedResults {
public UserProfile userProfile;
public List<Extension> extensions;
public CombinedResults(UserProfile userProfile, List<Extension> extensions) {
this.userProfile = userProfile;
this.extensions = extensions;
}
}
Observable.zip(observable, extObs,
new Func2<List<UserProfile>, ArrayList<Extension>, CombinedResults>() {
@Override
public CombinedResults call(List<UserProfile> userProfiles, ArrayList<Extension> extensions) {
return new CombinedResults(userProfiles.get(0), extensions);
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.unsubscribeOn(Schedulers.io())
.subscribe(new Subscriber<CombinedResults>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
e.printStackTrace();
}
@Override
public void onNext(CombinedResults combined) {
profileListener.onProfileSet(combined.userProfile, combined.extensions);
}
});