Ich benutze retrofit:2.1.0
und ich versuche, die Antwort zu meinem eigenen POJO (UserProfile) zu speichern, aber ich kann nicht auf den POJO zugreifen, ich zuweisen die Antwort, außerhalb der Rückrufe.Speichern asynchrone Retrofit-Antwort
Also, in diesem Anruf unten möchte ich Zugriff auf UserProfile außerhalb dieses Anrufs haben.
//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
}
});
// hier Userprofile null ist und daher nicht Status Log.d erhalten (TAG, "Status außerhalb des Call ist:" + userProfile.getStatus());
Neuer Ansatz, das gleiche Resultat
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
}
});
Und dieser wird noch vor Rückruf gefeuert und ist daher null
if(userProfileList.size() > 0) {
for(UserProfile userProfile : userProfileList) {
Log.d(TAG, "Status is: " + userProfile.getStatus());
}
} else {
Log.d(TAG, "YakkerProfileList is NULL");
}
"Ich kann scheinbar nicht auf das POJO zugreifen, ich weise die Antwort außerhalb der Rückrufe zu." - Was genau willst du machen? Haben Sie einen Fehler? –
* Wenn * versuchen Sie auf das 'UserProfile' zuzugreifen? Wenn Sie versuchen, darauf zuzugreifen, bevor der Rückruf ausgelöst wird, wird 'null' zurückgegeben. – Bryan
Ja, außerhalb des "Anrufs" kann ich nicht einmal auf 'UserProfile' zugreifen. Ich habe versucht, eine Instanz von 'UserProfile' zu erstellen und dann' userProfile = response.body() 'aufzurufen und wenn ich einen Getter mache:' Log.d (TAG, "Benutzerstatus außerhalb von Call ist:" + userProfile.getStatus()); ' –