Android RxJava登录并获取用户信息
我有两个函数Android RxJava登录并获取用户信息,android,rx-java,retrofit,Android,Rx Java,Retrofit,我有两个函数logiuser和getuserinformation使用RxJava2和RxJava2。登录并获取userid后,如何从userid和setText用户信息中获取textView的userinformation 谢谢。这是我的密码: TextView textView; Maybe<User> loginUser(String username, String password) { return RetrofitClient.getClient().crea
logiuser
和getuserinformation
使用RxJava2和RxJava2。登录并获取userid后,如何从userid和setText用户信息中获取textView的userinformation
谢谢。这是我的密码:
TextView textView;
Maybe<User> loginUser(String username, String password) {
return RetrofitClient.getClient().create(RetrofitInterface.class)
.loginUserRx("http://10.0.2.2:3000/users", username, password);
}
Maybe<UserInfo> getUserInformation(String id) {
return RetrofitClient.getClient().create(RetrofitInterface.class)
.getUserInfoById("http://10.0.2.2:3000/userinformation", id);
}
loginUser(username, password)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
...........
UserInfo.java
public class UserInfo {
@SerializedName("id")
@Expose
private String id;
@SerializedName("name")
@Expose
private String name;
@SerializedName("address")
@Expose
private String address;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
那样做
loginUser(username, password)
.flatMap(user -> getUserInformation(user.getId()))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(userInfo -> { /* TODO set info in textView */ }, error -> { /* TODO handle error */ })
首先调用loginuser,然后在回调成功时再次调用特定用户的getuserinformation。在登录方法成功时触发getUserInfo回调。。。
loginUser(username, password)
.flatMap(user -> getUserInformation(user.getId()))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(userInfo -> { /* TODO set info in textView */ }, error -> { /* TODO handle error */ })