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

标签 java android rest logic retrofit2

问题是全局变量“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/

相关文章:

android - 画廊中的图像未显示在 ionic 2 中的 img 标签上

android - 如何在android中为不同的语言使用不同的png无文本按钮?

android - 解析 sdcard 中的 XML 文件 - 出现空指针异常

c# - ASP.Net Cookie 未保存到浏览器

java - 将类移动到包后,Netbeans Java Web 应用程序不会部署

java - WebDriver:如何检查页面对象 Web 元素是否存在?

java - 带有自定义 entityManagerFactory 和 Query 注释的 validateQuery 中的 Spring 数据 JPA NPE

java - 在 REST Assured 中,如何使用参数映射?

java - Jetty JNDI 与 Oracle 错误 : IllegalStateException: Nothing to bind for name jdbc/replaydev

java - Web 应用程序中的内存泄漏