From 435c01e6d4a9876d21fc9aec1ce9be279a2d1537 Mon Sep 17 00:00:00 2001 From: Tan Jun Rong Date: Mon, 6 Jul 2015 18:28:10 +0900 Subject: [PATCH] Change retrofit example to use FlatMap as an exercise --- .../android/rxjava/RetrofitFragment.java | 59 +++++++++++-------- 1 file changed, 33 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/com/morihacky/android/rxjava/RetrofitFragment.java b/app/src/main/java/com/morihacky/android/rxjava/RetrofitFragment.java index 10bc0e05..c5420146 100644 --- a/app/src/main/java/com/morihacky/android/rxjava/RetrofitFragment.java +++ b/app/src/main/java/com/morihacky/android/rxjava/RetrofitFragment.java @@ -10,14 +10,17 @@ import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.ListView; -import butterknife.ButterKnife; -import butterknife.InjectView; -import butterknife.OnClick; + import com.morihacky.android.rxjava.retrofit.Contributor; import com.morihacky.android.rxjava.retrofit.GithubApi; import com.morihacky.android.rxjava.retrofit.User; + import java.util.ArrayList; import java.util.List; + +import butterknife.ButterKnife; +import butterknife.InjectView; +import butterknife.OnClick; import retrofit.RequestInterceptor; import retrofit.RestAdapter; import rx.Observable; @@ -85,34 +88,38 @@ public void onListContributorsClicked() { _adapter.clear(); _subscriptions.add(// - _api.contributors(_username.getText().toString(), _repo.getText().toString()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Observer>() { - @Override - public void onCompleted() { - Timber.d("Retrofit call 1 completed"); - } + _api.contributors(_username.getText().toString(), _repo.getText().toString()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .flatMap(new Func1, Observable>() { + @Override + public Observable call(List contributors) { + return Observable.from(contributors); + } + }) + .subscribe(new Observer() { + @Override + public void onCompleted() { + Timber.d("Retrofit call 1 completed"); + } - @Override - public void onError(Throwable e) { - Timber.e(e, - "woops we got an error while getting the list of contributors"); - } + @Override + public void onError(Throwable e) { + Timber.e(e, + "woops we got an error while getting the list of contributors"); + } - @Override - public void onNext(List contributors) { - for (Contributor c : contributors) { + @Override + public void onNext(Contributor c) { _adapter.add(format("%s has made %d contributions to %s", - c.login, - c.contributions, - _repo.getText().toString())); + c.login, + c.contributions, + _repo.getText().toString())); Timber.d("%s has made %d contributions to %s", - c.login, - c.contributions, - _repo.getText().toString()); - } + c.login, + c.contributions, + _repo.getText().toString()); } })); }