毕加索怎么知道它在一个列表中运行?
Posted
技术标签:
【中文标题】毕加索怎么知道它在一个列表中运行?【英文标题】:How does picasso know it runs in a list? 【发布时间】:2021-12-29 11:07:22 【问题描述】:我正在寻找Picasso 的文档,它提到:
Features
ADAPTER DOWNLOADS
Adapter re-use is automatically detected and the previous download canceled.
@Override public void getView(int position, View convertView, ViewGroup parent)
SquaredImageView view = (SquaredImageView) convertView;
if (view == null)
view = new SquaredImageView(context);
String url = getItem(position);
Picasso.get().load(url).into(view);
但从他们提供的示例中,我不明白毕加索如何理解它正在将图像加载到适配器中,或者可以取消之前的下载。
我在这里错过了什么?
【问题讨论】:
【参考方案1】:它没有。它跟踪当前下载的所有图像,如果再次请求相同的 URI,它将不会启动新的下载请求(它表示旧的将被取消,更准确地说旧的下载将继续,但旧下载不会发生,将被新下载取代)。所以它不知道它在列表中,但这种行为是列表想要的。
它也知道它被下载到哪个视图,所以它也可能使用它。如果同一个视图被多次加载,实际上只有最后一个会被执行。
【讨论】:
如果URI相同,表示同一张图片?但在一个列表中,我们有多个不同的图像。 是的,相同的 URI 表示相同的图像。在列表中,您将拥有不同的图像,但每个不同的图像都有自己的 URI。 那么文档说的是,如果一个列表有多个相同的图像,那么旧的回调不会被调用,这意味着我们已经从之前的请求中滚动出来了吗?对吗?以上是关于毕加索怎么知道它在一个列表中运行?的主要内容,如果未能解决你的问题,请参考以下文章