Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么';从ViewModel拨打电话时,是否改装排队工作?_Java_Android_Kotlin_Retrofit2_Android Lifecycle - Fatal编程技术网

Java 为什么';从ViewModel拨打电话时,是否改装排队工作?

Java 为什么';从ViewModel拨打电话时,是否改装排队工作?,java,android,kotlin,retrofit2,android-lifecycle,Java,Android,Kotlin,Retrofit2,Android Lifecycle,我构建了MVVM,并通过改造2从网络中获取数据。获取数据流的过程如下:MainActivity->ViewModel->Repository->APiService。因此,我从存储库中调用enqueu,如下所示: public List<Result> getArticles() { final List<Result>[] articles = new List[]{new ArrayList<>()}; Log.d(TAG, "g

我构建了MVVM,并通过改造2从网络中获取数据。获取数据流的过程如下:MainActivity->ViewModel->Repository->APiService。因此,我从存储库中调用enqueu,如下所示:

public List<Result> getArticles() {
    final List<Result>[] articles = new List[]{new ArrayList<>()};
    Log.d(TAG, "getArticles");
    ApiService.getService().getArticles("test", "thumbnail").enqueue(new Callback<Example>() {
        @Override
        public void onResponse(Call<Example> call, Response<Example> response) {
            Log.d(TAG, "onResponse");
            if (response.isSuccessful()) {
                Log.d(TAG, "isSuccessful");
                articles[0] = response.body().getResponse().getResults();   
            }
        }

        @Override
        public void onFailure(Call<Example> call, Throwable t) {
            Log.d(TAG, "onFailure");
        }
    });
    return articles[0];
}
public List<Result> getArticleList() {
    Log.d(TAG, "getArticleList");
    articleRepository = new ArticleRepository();
    articleRepository.getArticles();
    return articleList;
}

但当我从改装排队onResponse回调打印它时,它确实起作用。这里有什么问题?

尝试更改ViewModel以返回articleRepository.getArticles()

公共列表getArticleList(){
Log.d(标签“getArticleList”);
articleRepository=新建articleRepository();
返回articleRepository.getArticles();
}

尝试更改ViewModel以返回articleRepository.getArticles()

公共列表getArticleList(){
Log.d(标签“getArticleList”);
articleRepository=新建articleRepository();
返回articleRepository.getArticles();
}

对不起,我的不好,原因是小代码错误。我宁愿对我自己进行向下投票:D但是,列表仍然没有从MainActivity中登录。对不起,我的不好,原因是小代码错误。我宁愿对我自己进行向下投票:D但是,列表仍然没有从MainActivity中登录。非常感谢,我后来在发布问题时发现了它。你知道为什么列表没有从Main活动中记录下来吗?这非常重要。你的改装调用是异步的。您必须使用对活动的回调才能在UI中获得结果。可能会有帮助,谢谢!明白了,我在OnResponse中调用了setValue,并在LiveData onChanged Callback中进行了ui更改非常感谢,我后来在发布问题时发现了它。你知道为什么列表没有从Main活动中记录下来吗?这非常重要。你的改装调用是异步的。您必须使用对活动的回调才能在UI中获得结果。可能会有帮助,谢谢!明白了,我在OnResponse中调用了setValue,并在LiveData onChanged回调中进行了ui更改
for (Result article : articleList) {
    Log.d(TAG, article.getSectionName());
}
public List<Result> getArticleList() {
    Log.d(TAG, "getArticleList");
    articleRepository = new ArticleRepository();
    return articleRepository.getArticles();
}