Retrofit 2.0.0-beta, . , POJO , API GitHub, .
- Observable Call.
public interface GitHubService {
@GET("/users/{user}")
Observable<User> getUser(@Path("user") String user);
}
User
public class User {
public String login;
public int id;
}
addCallAdapterFactory -
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.github.com/")
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
-
GitHubService gitHubService = retrofit.create(GitHubService.class);
cache , Observable, . Observable , . , , map User . map . . docs. . id login.
Observable<User> getUserResult = gitHubService.getUser("octocat").cache(1);
getUserResult.map(new Func1<User, Integer>() {
@Override
public Integer call(User user) {
return user.id;
}
}).subscribe(new Action1<Integer>() {
@Override
public void call(Integer id) {
Log.d("Stream 1", "id = " + id);
}
});
getUserResult.map(new Func1<User, String>() {
@Override
public String call(User user) {
return user.login;
}
}).subscribe(new Action1<String>() {
@Override
public void call(String login) {
Log.d("Stream 2", "login = " + login);
}
});
, , gradle ,
compile 'io.reactivex:rxjava:1.0.14'
compile 'com.squareup.retrofit:retrofit:2.0.0-beta1'
compile 'com.squareup.retrofit:adapter-rxjava:2.0.0-beta1'
compile 'com.squareup.retrofit:converter-gson:2.0.0-beta1'
, , RxJava Android, Retrolambda, . , Rx , .
getUserResult.map(user -> user.id).subscribe(
id -> { Log.d("Stream 1", "id = " + id); }
);
getUserResult.map(user -> user.login).subscribe(
login -> { Log.d("Stream 2", "login = " + login); }
);