2017-01-04 12 views
0

ピカソを使用して複数の画像をダウンロードしようとしています。サイトのピカソで複数の画像をダウンロードする

for(int i=1; i <=20; i++){ 
    String url = img_url + i + "/profile.jpg"; 
    String img_dir = img_dir + i; 
    Picasso.with(this).load(url).into(picassoImageTarget(getApplicationContext(),img_dir, img_name)); 

} 

URLは次のようになります:

site.com/img/equipment/1/profile.jpg, 
site.com/img/equipment/2/profile.jpg, 
site.com/img/equipment/3/profile.jpg 

のように...

私はのためのループなし

Picasso.with(this).load(url).into(picassoImageTarget(getApplicationContext(),img_dir, img_name)); 

を試してみましたが、ここに私のコードですそれは働いている。私がループの中に置いたとき、画像はダウンロードされません。

は、ここで私の目標

private Target picassoImageTarget(Context context, final String imageDir, final String imageName) { 
    Log.d("picassoImageTarget", " picassoImageTarget"); 
    ContextWrapper cw = new ContextWrapper(context); 
    final File directory = cw.getDir(imageDir, Context.MODE_PRIVATE); // path to /data/data/yourapp/app_imageDir 
    return new Target() { 
     @Override 
     public void onBitmapLoaded(final Bitmap bitmap, Picasso.LoadedFrom from) { 
      new Thread(new Runnable() { 
       @Override 
       public void run() { 
        final File myImageFile = new File(directory, imageName); // Create image file 
        FileOutputStream fos = null; 
        try { 
         fos = new FileOutputStream(myImageFile); 
         bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } finally { 
         try { 
          fos.close(); 
         } catch (IOException e) { 
          e.printStackTrace(); 
         } 
        } 
        Log.i("image", "image saved to >>>" + myImageFile.getAbsolutePath()); 

       } 
      }).start(); 
     } 

     @Override 
     public void onBitmapFailed(Drawable errorDrawable) { 
     } 
     @Override 
     public void onPrepareLoad(Drawable placeHolderDrawable) { 
      if (placeHolderDrawable != null) {} 
     } 
    }; 
} 

助けてくださいます。ありがとう。

+0

たぶん、あなたのコードは次のようになりますか?ループの 'url'値が期待どおりであることを確認しましたか? –

+0

はい私はかなりURLの値が正しいと確信しています。ログファイルにはエラーは表示されませんが、画像は引き続きダウンロードされません。 –

+0

私はTargetクラスを作ろうとしましたが、まだダウンロードされていません。ディレクトリを作成していますが、写真はダウンロードしていません。 –

答えて

0

Targets are held in WeakReferences.

あなたが収集したごみであることからそれらを防ぐために、保持したいターゲットへの参照を保持する必要があります。ログファイル内のエラーを参照してください

final class MyLoader { 
    final ArrayList<Target> targets = new ArrayList<>(20); 
    void load(...) { 
    for(...) { 
     Target target = picassoImageTarget(...); 
     targets.add(target); 
     picasso.load(...).into(target); // TODO: Maybe remove from list when complete. 
    } 
    } 
} 
+0

それは働いている!ありがとう! –

関連する問題