我正在使用Retrofit从https://newsapi.org加载新闻数据,当我尝试从两个来源Android加载新闻时,我成功地从一个来源加载新闻。
这是Stack Trace图像:
我的堕落代码
for (int i = 0; i < config.NEWS_SOURCE.length; i++) {
Call<Article> call= clientInterface.getNews(config.NEWS_SOURCE[i], config.NEWS_API_KEY);
call.enqueue(new Callback<Article>() {
@Override
public void onResponse(Call<Article> call, Response<Article> response) {
List<News> news = response.body().getArticles();
/*
newsRecylcerView.setAdapter(new NewsAdapter(news,
R.layout.news_list, getApplicationContext()));
*/
Log.d("News from API", "Number of movies: " + news.size());
Log.d("News From List: ", news.get(0).getTitle());
}
@Override
public void onFailure(Call<Article> call, Throwable t) {
Log.e("Error we received", t.toString());
}
});
}
答案 0 :(得分:0)
您的错误就在这一行:
List<News> news = response.body().getArticles();
根据您提供的信息很少,我最好的猜测是body()
是null
,而您正试图在getArticles()
对象上调用null
。
可能你的一个新闻来源没有返回任何数据。
答案 1 :(得分:-2)
避免for循环从API调用中获取数据。在获得成功的响应后,对单个请求使用单个调用,然后使用next。首先尝试根据响应观察响应并创建响应pojo对象模型。
可能您正在尝试按标签或索引获取不存在的数据。首先记录您的整个回复