我正在使用retrofit:2.1.0
并且我正在尝试保存返回到我自己的POJO(UserProfile)的响应,但我似乎无法访问POJO,我在回调之外分配响应
因此,在下面的此次通话中,我希望能够在此次通话之外访问 UserProfile 。
//adding `UserProfile userProfile;` outside of Call didn't help either
call.enqueue(new Callback<UserProfile>() {
@Override
public void onResponse(Call<UserProfile> call, Response<UserProfile> response) {
if (response.isSuccessful()) {
UserProfile userProfile = response.body();
}
}
@Override
public void onFailure(Call<UserProfile> call, Throwable t) {
//do something
}
});
//这里userProfile为null,因此无法获取状态 Log.d(TAG,&#34; Call之外的状态是:&#34; + userProfile.getStatus());
新方法,结果相同
private List<UserProfile> userProfileList = new ArrayList<>();
call.enqueue(new Callback<UserProfile>() {
@Override
public void onResponse(Call<UserProfile> call, Response<UserProfile> response) {
if (response.isSuccessful()) {
UserProfile userProfile = response.body();
userProfileList.add(userProfile);
}
}
@Override
public void onFailure(Call<UserProfile> call, Throwable t) {
//do something
}
});
这个甚至在回调之前被解雇,因此是空的
if(userProfileList.size() > 0) {
for(UserProfile userProfile : userProfileList) {
Log.d(TAG, "Status is: " + userProfile.getStatus());
}
} else {
Log.d(TAG, "YakkerProfileList is NULL");
}
答案 0 :(得分:0)
我在onResponse()
中添加了一个setter,它允许我在代码中的其他位置使用响应对象,如下所示:
@Override
public void onResponse(Call<UserProfile> call, Response<UserProfile> response) {
if (response.isSuccessful()) {
UserProfile userProfile = response.body();
//elsewhere in the code, I can read the value from this method
setUserProfile(userProfile.getStatus());
}
}