Скажем, например, у меня был класс:Multiple API вызовов создать объект
public class NI {
private int id;
@SerializedName("date")
private String created_at;
private String slug;
private String type;
private String link;
private WPTitle title;
private WPContent content;
private WPExcerpt excerpt;
@SerializedName("author")
private int authorId;
private int featured_media;
private WPMedia media;
List<Integer> categories;
}
И еще один класс:
public class WPMedia {
private int id;
private String media_type;
private String mime_type;
private String source_url;
}
Вопрос заключается в том, что WPMedia
требует отдельного вызова API на основе на значение int featured_media
. Как бы я построил наблюдаемую цепочку, чтобы получить класс NI
, а затем другой, чтобы получить WPMedia
, а затем установить его на объект?
Я использую Дооснащение сделать API вызовы, как это:
@GET("wp-json/wp/v2/posts")
Observable<ArrayList<NI>>getPostsObservableByCategory(@Query("categories") int category, @Query ("per_page") int limit, @Query("page") int skip);
@GET("wp-json/wp/v2/media/{id}")
Observable<WPMedia> getMediaObservable(@Path("id") int id);
Класс NI должен быть загружен первым, так что feature_media INT может быть доступен, а затем он передается getMediaObservable вызова. Если я правильно понимаю ваш пример, я не вижу, как указанный int передается вызову getMediaObservable. Мне ясно? –
А в этом случае это должно быть примерно следующее: 'getPostsObservableByCategory (...). FlatMap (nis -> Observable.from (nis) .flatMap (ni -> getMediaObservable (ni.getFeatureMedia) .first() .doOnNext (ni :: setWPMedia) .map (m -> ni))) '.Вы помещаете список 'nis' в' Observable' и 'flatMap' над каждым элементом, вызывая' getMediaObservable' с полем 'featureMedia' (через getter) из каждого' ni'. – RvanHeest
Я получаю «переменная-вывод R имеет несовместимые границы» компилировать ошибку из .map (m -> ni) –