#generics #retrofit #rx-java2 #flatmap
#общие #модернизация #rx-java2 #flatmap
Вопрос:
Мой интерфейс службы api:
Observable <PlanResponse> getPlansRx(@Query string)
(
@Header("session-token") String session_token
);
Мой ApiCall с использованием Rxjava:
private < T extends BaseResponse > void execute( Function<T,Observable> function, ArrayList < T > arrayList, final IHttpCallBack< T > serverResponseCallBack ){
Observable.fromIterable(arrayList)
.flatMap(s->
function.apply(s)
).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<T>() {
@Override
public void onSubscribe ( @NonNull Disposable d ) {
}
@Override
public void onNext (T t ) {
}
@Override
public void onError ( @NonNull Throwable e ) {
}
@Override
public void onComplete ( ) {
}
});
}
}
На самом деле, когда я хочу создать вызов Api с помощью этого метода, я не знаю, как передать мой интерфейс Api service в качестве параметра моему методу вызова Api, потому что я должен вызвать этот метод с элементами ArrayList в качестве параметра, но, как вы можете видеть, это делается внутри метода executeRx и внутри flatMap.что должно быть сделаноЯ делаю?
public void getPlans(ArrayList< Object > allCcPlans, IHttpCallBack < PlanResponse > serverResponseCallBack ){
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
Function function = (Function) instance.getApi().getPlansRx("?");
instance.executeRx(function,allCcPlans,serverResponseCallBack);
}
}
Что я должен поставить вместо вопросительного знака?
причина, по которой я настаиваю на создании этого метода, заключается в создании универсального метода для всех моих многопараллельных запросов.