gpt4 book ai didi

java - 使用 picasso 加载多张图片 - Android

转载 作者:行者123 更新时间:2023-11-29 01:26:29 25 4
gpt4 key购买 nike

我正在尝试使用 picasso 库从某些 url 加载多个图像。

到目前为止我已经尝试过这段代码:

 for(int i = 0; i < friends.size(); i++)
{
final Profile profile = friends.get(i);
String url = profile.getUserImageUrl();


Picasso.with(getContext()).load(url).into(new Target() {
// It doesn't reach any of the code below ....!!

@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
profile.setUserImage(bitmap);
counter++;

if(counter >= friends.size() - 1)
cards();
}

@Override
public void onBitmapFailed(Drawable drawable) {
Log.e("App", "Failed to load company logo in onBitmapFailed method");
}

@Override
public void onPrepareLoad(Drawable drawable) {
Log.e("App","Failed to load company logo in onBitmapFailed method");
}

});
}

此代码无效。当我运行这段代码时,它没有到达 Target 界面中的任何一行。有人知道为什么吗?

最佳答案

您只需要在请求运行时保持对 Target 的强引用。并且对于要加载的每张图片,您还需要一个不同的 Target 实例(因为,如果我没记错的话,Picasso 将取消之前对 Target 的请求,如果为相同的 Target 启动一个新的。

解释:

您遇到此问题的实际原因是:

Note: This method keeps a weak reference to the Target instance and will be garbage collected if you do not keep a strong reference to it. To receive callbacks when an image is loaded use into(android.widget.ImageView, Callback).

来源:http://square.github.io/picasso/2.x/picasso/com/squareup/picasso/RequestCreator.html#into-com.squareup.picasso.Target-

所以,一般来说:

In most cases, you should use this when you are dealing with a custom View or view holder which should implement the Target interface.

但是:

在您的情况下,我认为最好的解决方案实际上是预先创建/找到 ImageViews,然后让 Picasso 将图像直接加载到其中。

关于java - 使用 picasso 加载多张图片 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33723926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com