¿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);
- ¿Asignación de objetos cuando se usa RxJava en código de 'alto tráfico'?
- RxJava comparte las emisiones de un Observable entre múltiples suscriptores
- Arquitectura de la aplicación de Android: RxJava
- RxAndroid y Retrofit: No se puede crear el adaptador de llamada para io.reactivex.Observable <retrofit2.Response <okhttp3.ResponseBody >>
- Encadenamiento de servicios de Retrofit con soporte de RxJava
¿Es posible hacerlo en zip o hay otros métodos de rxjava para resolver este tipo de problemas?
- Uso de subscribeOn con Retrofit
- Encadenamiento de RxJava observables con callbacks / listeners
- Compruebe que el método se llama en onNext del suscriptor de RxJava
- La comprensión incorrecta del búfer en RxJava
- Android + RxJava - carga de datos de db y servicio web
- RxJava: "java.lang.IllegalStateException: Sólo un suscriptor permitido!"
- Observable OnCompleted no puede actualizar la interfaz de usuario
- RXJava - buffer observable 1 hasta que se pueda observar 2 emite un elemento
Tienes que hacer exactamente lo que cricket_007 sugirió en el comentario.
Por ejemplo:
- 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
)
- Utilice un objeto de
CombinedResults
(oPair
) en suObservable.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); } });
- Google-services.json en el árbol del proyecto
- Ocultar Soft Keyboard en la aplicación para Android Desde fragmentos de ViewPager