Java 为什么';从ViewModel拨打电话时,是否改装排队工作?
我构建了MVVM,并通过改造2从网络中获取数据。获取数据流的过程如下:MainActivity->ViewModel->Repository->APiService。因此,我从存储库中调用enqueu,如下所示: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
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();
}