2015-02-06 57 views
2

我开发了一个简单的RSS阅读器,我想在回收站视图中显示每篇文章的标题和图像。毕加索不能在回收站查看Android

有一种情况我使用毕加索从一个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); 
} 

,但它不工作! 我使用单个URL测试毕加索,并且它可以正常工作,但是当将图像链接设置在数组列表中时,它不起作用。

+0

确保rssItems包含有效的项目,即他们的url非空,并且可以加载图像,例如通过网络浏览器。 – aga 2015-02-06 11:34:05

+0

我检查了,rssItems中有有效的地址,并且它们都在工作,当我使用带rssItem的地址之一的毕加索(比如:Picasso.with(F.context).load(“http:// www。 example.com“)。into(viewHolder.postImage);)它的工作原理,但是当我设置item.imageLink,它不起作用。 – 2015-02-06 11:49:37

+0

请完整,准确地解释“不起作用”的含义。 – CommonsWare 2015-02-06 12:23:55

回答

7

你见过this article?这是关于RecyclerView。作者在适配器中使用毕加索。

@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())); 
} 
0

我有同样的问题,当我想从它与扩展RecyclerView.Adapter和RecyclerView.ViewHolder API URL加载图像。
首先,您必须检查URL可能不为空或为空,然后使用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,以及各瑶池的,它可能为空或不正确的id瑶池视图。
我希望这会帮助你。

1

我被这个东西卡住了一段时间,但在网上阅读资源后才把它排序。 这是你需要做的,这对我有效。 我只是解决你在你的ViewHolder类中声明的在imageview中加载图像的问题。

public void onBindViewHolder(ViewHolder viewHolder, int i) { 
    Context context = viewHolder.postImage.getContext(); //<----- Add this line 
    RssItem item = rssItems.get(i); 

    //change context here 
    Picasso.with(context).load(item.imageLink).into(viewHolder.postImage); 

    viewHolder.postTitle.setText(item.title); 
    viewHolder.postAuthor.setText(item.postWriter); 
    viewHolder.postDate.setText(item.pubDate); 
} 

这是对我工作,我希望它会为你工作了。祝你好运。

+0

这对我有用。谢谢! – Dotl 2017-06-07 14:26:51