gpt4 book ai didi

android - 是否有可能在 rxjava android 订阅者的 onNext() 中获得 2 个值?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:24:30 24 4
gpt4 key购买 nike

我有一个像这样的可观察对象

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);
}
});
}

我需要在方法profileListener.onProfileSet(userProfile); 中传递 ArrayList 作为 profileListener.onProfileSet(userProfile,extensions);

是否可以在 zip 中这样做,或者 rxjava 是否有任何其他方法可以解决此类问题?

最佳答案

你必须做的正是cricket_007在评论中建议。

例如像这样:

  1. 创建一个类来表示您的观察结果的组合结果:

class CombinedResults {
public UserProfile userProfile;
public List<Extension> extensions;

public CombinedResults(UserProfile userProfile, List<Extension> extensions) {
this.userProfile = userProfile;
this.extensions = extensions;
}
}

(或者您可以使用 Pair 类)

  1. Observable.zip Func2 中使用 CombinedResults(或 Pair)对象。

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);
}
});

关于android - 是否有可能在 rxjava android 订阅者的 onNext() 中获得 2 个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36177239/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com