使用Retrofit在同一视图上加载多个API请求

时间:2017-11-23 19:15:41

标签: android retrofit

我正在使用Retrofit从https://newsapi.org加载新闻数据,当我尝试从两个来源Android加载新闻时,我成功地从一个来源加载新闻。

这是Stack Trace图像:

Stack Trace image

我的堕落代码

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());

           }
       });
   }

2 个答案:

答案 0 :(得分:0)

您的错误就在这一行:

List<News> news = response.body().getArticles();

根据您提供的信息很少,我最好的猜测是body()null,而您正试图在getArticles()对象上调用null

可能你的一个新闻来源没有返回任何数据。

答案 1 :(得分:-2)

避免for循环从API调用中获取数据。在获得成功的响应后,对单个请求使用单个调用,然后使用next。首先尝试根据响应观察响应并创建响应pojo对象模型。

可能您正在尝试按标签或索引获取不存在的数据。首先记录您的整个回复