我开发了一个简单的RSS阅读器,我想在回收者视图中显示每个帖子的标题和图像。
我在哪里使用毕加索从ArrayList加载图像:
public void onBindViewHolder(ViewHolder viewHolder, int i) {
RssItem item = rssItems.get(i);
Picasso.with(F.context).load(item.imageLink).into(viewHolder.postImage);
viewHolder.postTitle.setText(item.title);
viewHolder.postAuthor.setText(item.postWriter);
viewHolder.postDate.setText(item.pubDate);
}
但这不起作用!我使用单个网址测试了毕加索,它可以正常工作,但是在数组列表中设置图像链接时,它不起作用。
当我想使用扩展RecyclerView.Adapter和RecyclerView.ViewHolder中的API从其URL加载图像时遇到相同的问题。
首先,您必须检查URL可能不为空或为null,然后使用Picasso加载它。
@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {
RssItem item = rssItems.get(i);
if(item.imageLink!=null && !item.imageLink.isEmpty()) {
Picasso.with(F.context)
.load(item.imageLink)
.placeholder(R.drawable.default_placeholder)
.error(R.drawable.error_placeholder)
// To fit image into imageView
.fit()
// To prevent fade animation
.noFade()
.into(viewHolder.postImage);
} else {
viewHolder.postImage.setImageDrawable(ContextCompat.getDrawable(F.context,R.drawable.default_placeholder));
}
viewHolder.postTitle.setText(item.title);
viewHolder.postAuthor.setText(item.postWriter);
viewHolder.postDate.setText(item.pubDate);
}
最后,您必须了解viewHolder.postImage
它的发现方式。它可能为null或找不到ID正确的视图。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句