我开发了一个简单的RSS阅读器,我想在回收者 View 中显示每个帖子的标题和图像。
我在哪里使用毕加索从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正确的 View 。