我正在使用Picasso在我的ListView中加载图片。此ListView的项目没有占位符图像,并且加载的图像具有不同的大小。此列表在我的应用中用作时间轴。我的问题是,当我快速滚动时,项目出现,并在一段时间后显示图像。当我滚动列表时,这会导致项目被扩展的不良影响。
我想知道在Picasso下载图片后是否有某种方法可以显示此项目。
这就是我在adpater的getView中设置图像的方法:
View v = convertView;
ViewHolder viewHolder;
if (v == null) {
v = inflater.inflate(R.layout.timeline_item, parent, false);
viewHolder = new ViewHolder();
viewHolder.photo = (ImageView) v.findViewById(R.id.image_view);
v.setTag(viewHolder);
} else {
ViewHolder = (ViewHolder) v.getTag();
}
Picasso.with(context).load(timeline.getImage()).into(ViewHolder.photo);
return v;
答案 0 :(得分:0)
public void into(android.widget.ImageView target, Callback callback)
因此,您需要将com.squareup.picasso.Callback的实现添加到当前代码中并在此处提供:
Picasso.with(context).load(timeline.getImage()).into(ViewHolder.photo, <Callback here>);
在该回调中,您将图像添加到列表视图中。
当然这有问题。代码段似乎来自适配器的getView()。这意味着您在ListView中滚动到该视图后,只尝试将视图添加到ListView。
我确实知道如何实现这一目标,但我不能100%确定它的效果如何。您可以尝试将布局(R.layout.timeline_item)设置为可见性View.GONE。这可能导致所有图像在加载ListView后的同时开始加载,我假设您希望它们只在列表中到达后才开始加载。
答案 1 :(得分:0)
我认为毕加索一切皆有可能:)
我真的不知道你想要做什么,但我想解决方案是在图像加载时放一些东西,不是吗?
你可以使用那个
Picasso.with(context)
.load(url)
.placeholder(R.drawable.user_placeholder)
.error(R.drawable.user_placeholder_error)
.into(imageView);
您可以在加载图片时设置图片,如果出现错误,请显示错误图标,只是说。
如果这对您无效,请告诉我们,我们可以尝试找到另一种解决方案。