我正在为学校设置类似新闻应用程序的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标签也是如此
答案 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响应。