Created
November 5, 2017 05:42
-
-
Save captswag/ed49bc58159f027026d153dadc6eac0e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
void getNowPlayingMovies() { | |
Retrofit retrofit = new Retrofit.Builder() | |
.baseUrl(BuildConfig.BASE_URL) | |
.addConverterFactory(GsonConverterFactory.create()) | |
.addCallAdapterFactory(RxJava2CallAdapterFactory.create()) | |
.build(); | |
TmdbInterface tmdbInterface = retrofit.create(TmdbInterface.class); | |
Observable<HashMap<Integer, String>> genresListResponseObservable = | |
tmdbInterface.getGenresList(BuildConfig.API_KEY) | |
.map(new Function<GenresListResponse, HashMap<Integer, String>>() { | |
@Override | |
public HashMap<Integer, String> apply(GenresListResponse genresListResponse) throws Exception { | |
HashMap<Integer, String> genresMap = new HashMap<>(); | |
for (Genre genre : genresListResponse.getGenres()) { | |
genresMap.put(genre.getId(), genre.getName()); | |
} | |
return genresMap; | |
} | |
}) | |
.subscribeOn(Schedulers.newThread()) | |
.observeOn(Schedulers.newThread()); | |
Observable<NowPlayingMoviesListResponse> nowPlayingMoviesListResponseObservable = | |
tmdbInterface.getNowPlayingMovies(BuildConfig.API_KEY) | |
.subscribeOn(Schedulers.newThread()) | |
.observeOn(Schedulers.newThread()); | |
Observable.zip(genresListResponseObservable, nowPlayingMoviesListResponseObservable, | |
new BiFunction<HashMap<Integer, String>, NowPlayingMoviesListResponse, NowPlayingMoviesListResponse>() { | |
@Override | |
public NowPlayingMoviesListResponse apply(HashMap<Integer, String> genresMap, NowPlayingMoviesListResponse nowPlayingMoviesListResponse) throws Exception { | |
for (Result nowPlayingMovie : nowPlayingMoviesListResponse.getResults()) { | |
StringBuilder genre = new StringBuilder(); | |
for (int i = 0; i < nowPlayingMovie.getGenreIds().size(); i++) { | |
Integer id = nowPlayingMovie.getGenreIds().get(i); | |
if (i == 0) { | |
genre.append(genresMap.get(id)); | |
} else { | |
genre.append(", ").append(genresMap.get(id).toLowerCase()); | |
} | |
} | |
nowPlayingMovie.setGenre(genre.toString()); | |
} | |
return nowPlayingMoviesListResponse; | |
} | |
}).observeOn(AndroidSchedulers.mainThread()) | |
.subscribeOn(Schedulers.newThread()) | |
.subscribe(new Observer<NowPlayingMoviesListResponse>() { | |
@Override | |
public void onSubscribe(Disposable d) { | |
} | |
@Override | |
public void onNext(NowPlayingMoviesListResponse nowPlayingMoviesListResponse) { | |
mNowPlayingMoviesListView | |
.addNowPlayingMoviesToList(nowPlayingMoviesListResponse.getResults()); | |
} | |
@Override | |
public void onError(Throwable e) { | |
} | |
@Override | |
public void onComplete() { | |
} | |
}); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment