2
RxAndroid에서 Rx를 시작할 때 Retrofit이있는 API로 GitHub 사용자의 이름을 나열하고 싶습니다. 다음 API를 사용하고자하는 모든 사용자를 처리 한 후에 각 API 요청이 100 명의 사용자를 가져 오지만이를 수행하는 방법을 알지 못합니다. 누구든지 나를 도울 수 있니? RxAndroid : 관측 가능을 동기식으로 실행하십시오.
어디에 내 코드개장 인터페이스
interface GitHubService {
@GET("/users")
List<User> users(@Query("since") int since);
}
사용자 클래스
class User {
private Integer id;
private String login;
public String getLogin() {
return login;
}
public Integer getId() {
return id;
}
}
의 일부 조각 그리고 내 활동에서 onCreate 방법이다
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RequestInterceptor requestInterceptor = new RequestInterceptor() {
@Override
public void intercept(RequestFacade request) {
request.addHeader("User-Agent", "Retrofit-Sample-App");
request.addHeader("Accept", "application/json");
}
};
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint("https://api.github.com")
.setRequestInterceptor(requestInterceptor)
.build();
GitHubService mWebService = restAdapter.create(GitHubService.class);
mWebService.users().flatMap(new Func1<List<User>, Observable<User>>() {
@Override public Observable<User> call(List<User> users) {
return Observable.from(users);
}
}).flatMap(new Func1<User, Observable<String>>(){
@Override public Observable<String> call(User user) {
return Observable.just(user.getId() + ": " + user.getLogin());
}
})
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<String>() {
@Override
public void onCompleted() {
Log.i("TEST", "EXIT");
}
@Override
public void onError(Throwable e) {
Log.i("TEST", e.getLocalizedMessage());
}
@Override
public void onNext(String s) {
Log.i("TEST", s);
}
});
}