android - 在 Android 中从 Picasso 下载多张图片

标签 android download picasso

我正在使用 Picasso 库从 URL 下载图像。这是我对 picasso 的第一次尝试

场景:我想从服务器下载一些图像并将它们存储到一个文件中。我知道如何存储到文件和检索。当我运行下面的代码时,我碰巧看到我只得到了最后一张图片。 picasso 似乎并行运行。我通过显示 toast 消息来检查它。有没有办法解决这个问题?

问题:我只得到最后一个 url 图片。

这是我的代码

static int  count = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    for (int i = 0; i < url.length; i++)
    {

        // url is String array which has 2 urls. 
        ++count;   // Incrementing the count by 1
        Picasso.with(this).load(url[i])
        .into(new Target() {

            @Override
            public void onPrepareLoad(Drawable arg0) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onBitmapLoaded(Bitmap arg0, LoadedFrom arg1) {
                // TODO Auto-generated method stub
                arg0 = Bitmap.createScaledBitmap(arg0, 150, 150, true);
                filePath = saveFile(arg0);   // I'm just calling this function to check how many times `onBitmapLoaded` is called. And it is called only once...!!
            }

            @Override
            public void onBitmapFailed(Drawable arg0) {
                // TODO Auto-generated method stub

            }
        });
    }
}

public String saveFile (Bitmap bm)
{

   Toast.makeText(getApplicationContext(), ""+count, 100).show(); // Displaying the value of count, which always display as **2**. 
   return "";
}

最佳答案

尝试这种方式,希望这能帮助您解决问题。

static int  count = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    for (int i = 0; i < url.length; i++)
    {

        // url is String array which has 2 urls. 
        Picasso.with(this).load(url[i])
        .into(new Target() {

            @Override
            public void onPrepareLoad(Drawable arg0) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onBitmapLoaded(Bitmap arg0, LoadedFrom arg1) {
                // TODO Auto-generated method stub
                arg0 = Bitmap.createScaledBitmap(arg0, 150, 150, true);
                ++count; // Incrementing the count by 1
                filePath = saveFile(arg0);   // I'm just calling this function to check how many times `onBitmapLoaded` is called. And it is called only once...!!
            }

            @Override
            public void onBitmapFailed(Drawable arg0) {
                // TODO Auto-generated method stub

            }
        });
    }
}

public String saveFile (Bitmap bm)
{

   Toast.makeText(getApplicationContext(), ""+count, 100).show(); // Displaying the value of count, which always display as **2**. 
   return "";
}

关于android - 在 Android 中从 Picasso 下载多张图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24822086/

相关文章:

android - broadcastreceiver 在 android 设备关闭和打开不工作的情况下

android-actionbar - Android 平板电脑在带有图像的操作栏中更改应用程序名称

android - Android 的 Material Components 中新的 ExtendedFloatingActionButton 的收缩和扩展功能不起作用

java - Picasso 如何从 URL 接收图标并在第一次访问时显示它而不是重新运行应用程序?

java - picasso 图像未在 Gridview Android 中加载

java - 垂直拖放到 RecyclerView 上后如何保留 firestore 中的项目位置

download - 无法从服务器下载扩展名为 .7z 的文件

ios - 使用 Dropbox iOS SDK 下载照片

php - 从codeigniter中的 Controller 下载excel文件

android - 带有 Picasso 的 ListView Android 中的调色板