¿Es posible obtener 2 valores en onNext () de suscriptor en rxjava android?

Tengo un observable como este

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

Necesito pasar el ArrayList en el método profileListener.onProfileSet(userProfile); Como profileListener.onProfileSet(userProfile,extensions);

¿Es posible hacerlo en zip o hay otros métodos de rxjava para resolver este tipo de problemas?

Tienes que hacer exactamente lo que cricket_007 sugirió en el comentario.

Por ejemplo:

  1. Cree una clase que represente los resultados combinados de sus observables:
 class CombinedResults { public UserProfile userProfile; public List<Extension> extensions; public CombinedResults(UserProfile userProfile, List<Extension> extensions) { this.userProfile = userProfile; this.extensions = extensions; } } 

(Como alternativa, puede usar la clase Pair )

  1. Utilice un objeto de CombinedResults (o Pair ) en su Observable.zip Func2 .
 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); } }); 
  • Cómo obtener un Desechable para sujetos como suscriptor en RxJava2
  • Retorno combinado observable sólo si una condición coincide
  • ¿Cómo utilizar Flowable en RxJava 2?
  • Utilizando RxJava para la validación de inicio de sesión de correo electrónico, un observable está emitiendo dos veces
  • No vuelva a ejecutar la llamada de Retrofit si todavía está en curso con RxJava 2
  • CalledFromWrongThreadException incluso cuando se utiliza AndroidSchedulers.mainThread ()
  • Uso de Mockito con Retrofit 2.0
  • Cómo cancelar la solicitud con retofit2 y RxAndroid
  • NetworkOnMainThreadException con retrofit-beta2 y rxjava
  • Hacer cola de tareas con RxJava en Android
  • RxJava: Averigüe si BehaviorSubject fue un valor repetido o no
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.