【问题标题】:How to see when information is lost using API and Glide for images如何使用 API 和 Glide 来查看信息何时丢失
【发布时间】:2019-11-03 00:58:04
【问题描述】:

我正在为学校设置一个类似 NewYorkTimes 的新闻应用程序(使用他们的 API)。每个类别都有 3 个标签(热门故事、最受欢迎、艺术) 每个选项卡都是依赖于 MainActivity 的片段,我们可以使用 ViewPager 在片段之间切换。 每个 Fragment 包含一个 RecyclerView。 (对于文章列表) 我正在使用改造和滑翔。 如果需要,这是我的 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 选项卡也是如此

【问题讨论】:

标签: java android api stream android-glide


【解决方案1】:

问题在于您的 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 响应。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-26
    • 2019-12-22
    • 2021-02-11
    • 1970-01-01
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多