gpt4 book ai didi

java - Retrofit2 - 列表最终为空,即使在填充之后也是如此。

转载 作者:行者123 更新时间:2023-12-02 11:46:24 25 4
gpt4 key购买 nike

问题是全局变量“responseDogs”在方法结束时返回为 null,但在 onResponse 方法中填充!?

代码:

public class DogREST {


private List<Dog> responseDogs;

//...


public List<Dog> retrieveDogsFromREST() {


final DogService dogService = DogService.serviceDog;


dogService.getDogs(AuthRequest.createAuthJsonString()).enqueue(new Callback<DogList>() {
@Override
public void onResponse(Call<DogList> call, Response<DogList> response) {

if (response.isSuccessful()) {

responseDogs = response.body().getDogs();


Log.d("DogRESTSuccessful", "" + response.body().getDogs());
Log.d("dogsReceived - >", "" + responseDogs);


} else {

Log.d("DogRESTNSuccessful", "- statusCode" + response.code());

}

}


@Override
public void onFailure(Call<DogList> call, Throwable t) {

//...

}


});


Log.d("onRetrieveDR", ""+ responseDogs);
return reponseDogs;
}
}

注意 ->> "Log.d("DogRESTSuccessful", ""+ response.body().getDogs())"和 "Log.d("dogsReceived ->", ""+ responseDogs)"显示已填充响应狗...

但是retrieveDogsFromREST返回空列表,“Log.d(”onRetrieveDR”, “”+ responseDogs)”也是如此

也许我写错了逻辑?不知道

最佳答案

你的逻辑有一个简单的误解。发出请求的线程是异步,这意味着它最终将在您的应用程序运行时执行。即使您的请求很快,它也总是返回 null,因为线程没有时间更新它。

我给你的建议是,制作一个 Observer pattern 一旦您的 onResponse 被调用,通知系统并触发更新 View 的事件需要更新。

通常人们最终会做这样的事情 post

关于java - Retrofit2 - 列表最终为空,即使在填充之后也是如此。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48170548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com