如何使用API​​和Glide图片查看丢失的信息

时间:2019-06-20 08:30:25

标签: java android api stream android-glide

我正在为学校设置类似新闻应用程序的NewYorkTimes(使用其API)。每个类别都有3个标签(热门故事,最受欢迎,艺术) 每个选项卡都是MainActivity依赖的片段,我们可以使用ViewPager在片段之间进行切换。 每个片段都包含一个RecyclerView。 (关于物品清单) 我正在使用Retrofit和Glide。 如果需要,这是我的github存储库:https://github.com/matteovaccari/MyNews 我已经成功实现了Article API,但是在使用Glide时遇到了麻烦,这是我的问题: 并非显示所有图像(将显示近8张图像/ 10张图像) 在“热门标签”中,它是0/10张图片

我认为我的问题出在我的SetImage方法上:

 public void setArticleImage(Result article, RequestManager glide) {
    //If article url isn't null
    if (article.getMultimedia() != null) {
        if (article.getMultimedia().size() > 0) {
            // get image string
            String urlMultimedia = article.getMultimedia().get(0).getUrl();
            // clean the URL
            if (urlMultimedia.startsWith("images")) {
                urlMultimedia = "https://www.nytimes.com/" + urlMultimedia;
            }
            glide.load(urlMultimedia).apply(new RequestOptions().fallback(R.drawable.ic_launcher_background)).into(imageView);
        } else {
            // default image
            getImageDefault(glide);
        }
    } else {

        if (article.getMedia() == null) {
            //image default
            getImageDefault(glide);
        } else {
            // get Url
            String mUrlMedia = article.getMedia().get(0).getMediaMetadata().get(0).getUrl();
            // glide the string
            glide.load(mUrlMedia).apply(new RequestOptions().fallback(R.drawable.ic_launcher_background)).into(imageView);
        }
    }
}

此方法在我的updateUI方法(带有setTitle,setSection等)中调用

我不知道如何加载某些图像,而有些则不... 对于不加载任何内容的MostPopular标签也是如此

1 个答案:

答案 0 :(得分:0)

问题出在您的 API响应上。由于某些情况下您的条件if (article.getMultimedia() != null)失败,因此无法加载某些图像。在这些情况下,API响应中根本不存在multimedia,因此它没有任何imageUrl,因此正在加载您的默认占位符图像

public void setArticleImage(Result article, RequestManager glide) {
    //This condition is FAILING for you because article doesn't have multimedia object inside it.
    if (article.getMultimedia() != null) {
        if (article.getMultimedia().size() > 0) {
            // get image string
            String urlMultimedia = article.getMultimedia().get(0).getUrl();
            // clean the URL
            if (urlMultimedia.startsWith("images")) {
                urlMultimedia = "https://www.nytimes.com/" + urlMultimedia;
            }
            glide.load(urlMultimedia).apply(new RequestOptions().fallback(R.drawable.ic_launcher_background)).into(imageView);
        } else {
            // default image
            getImageDefault(glide);
        }
    } else {

        if (article.getMedia() == null) {
            //image default
            getImageDefault(glide);
        } else {
            // get Url
            String mUrlMedia = article.getMedia().get(0).getMediaMetadata().get(0).getUrl();
            // glide the string
            glide.load(mUrlMedia).apply(new RequestOptions().fallback(R.drawable.ic_launcher_background)).into(imageView);
        }
    }
}

您应该要求开发人员修复API响应。