我开发了一个简单的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 。

08-18 13:12