Skip to content

Instantly share code, notes, and snippets.

@dave-lang1
dave-lang1 / retrofitCombinateResponses.java
Last active January 24, 2017 17:31
Consumir un ServiceA() que retorne una lista de objetos,por cada objeto(Mediante su ID) consumiremos ServiceB(Objeto.Id) el cual retorna detalles del mismo al final se une la resouesta del ServiceA() con ServiceB() en un nuevo Objeto.
//Interface API
public interface api{
@GET("{movie}/{list}")
Observable<GenerosResponse> getAllGeneros(@Path("movie")String movie,@Path("list")String list,@Query("api_key")String key);
@GET("{number}/{movies}")
Observable<ResponseMovies> getAllMovies(@Path("number")int number,@Path("movies")String movies,@Query("api_key")String key, @Query("sort_by")String sort_by);
}
//Pojo -> List Genres Movies
Retrofit repo = new Retrofit.Builder()
.baseUrl("https://api.themoviedb.org/3/genre/")
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
Observable<GenerosResponse> Genres = repo
.create(services.class)
.getAllGeneros("movie","list","da0d692f7f62a1dc687580f79dc1e6a0")
.subscribeOn(Schedulers.newThread())
package com.example.hackro.myapplication.home;
/**
* Created by hackro on 21/01/17.
*/
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
public class request{
public void test1(){
//ServiceA() --> return list object {"id":1,"name":""}
//ServiceB(id) --> return detail for object
service.getAllGeneros("movie","list","da0d692f7f62a1dc687580f79dc1e6a0")
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.flatMap(userResponse -> Observable.just(userResponse.getGenres())) //get list from response