Picasso不适用于android中的Recycler View

Far*_*and 3 android picasso android-recyclerview

我开发了一个简单的RSS阅读器,我想在回收站视图中显示每个帖子的标题和图像.

我可以使用Picasso从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);
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用!我用一个网址测试Picasso并且它可以正常工作,但是当设置图像链接在数组列表中时,它不起作用.

Lis*_*ssF 8

你看过这篇文章吗?这是关于RecyclerView.作者在适配器中使用Picasso.

@Override
public void onBindViewHolder(FeedListRowHolder feedListRowHolder, int i) {
    FeedItem feedItem = feedItemList.get(i);

    Picasso.with(mContext).load(feedItem.getThumbnail())
            .error(R.drawable.placeholder)
            .placeholder(R.drawable.placeholder)
            .into(feedListRowHolder.thumbnail);

    feedListRowHolder.title.setText(Html.fromHtml(feedItem.getTitle()));
}
Run Code Online (Sandbox Code Playgroud)


Key*_*One 3

当我想使用扩展 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);
}
Run Code Online (Sandbox Code Playgroud)

最后你必须知道viewHolder.postImage它是如何被发现的。它可能为 null 或未正确按 id 找到视图。