2015-11-04 42 views
4

我有問題,獲取位圖使用畢加索for循環。畢加索第一次運行不會調用BitmapLoaded for循環

它不被稱爲onBitmapLoaded在第一次運行

第二輪

for (int i = 0; i < 3; i++) { 
      final int k=i; 
      Picasso.with(this) 
        .load(ListA.get(i).getImage()) //image 
        .resize(100, 100) 
        .transform(new ImageTrans_CircleTransform()) 
        .into(new Target() { 
         @Override 
         public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {       
          Log.i("load", "Ok " + k); 
          //use bitmap for add marker to map     
         } 

         @Override 
         public void onBitmapFailed(Drawable errorDrawable) { 
         } 

         @Override 
         public void onPrepareLoad(Drawable placeHolderDrawable) { 
          Log.i("load", "first " + k); 
         } 
        }); 
     } 

登錄

11-04 16:42:22.222 11677-11677/com.tenten I/load﹕ first___0 
11-04 16:42:22.222 11677-11677/com.tenten I/load﹕ first___1 
11-04 16:42:22.232 11677-11677/com.tenten I/load﹕ first___2 

我用畢加索擺脫列表圖像的位圖。

我需要位圖而不是imageview。

謝謝。 :D

回答

21

使用畢加索的目標的一個常見問題是人們不會對它們保持強烈的引用。這導致目標是隨機工作的,因爲有時他們在完成之前被GC收集,有時他們活得足夠長以獲得所謂的回調。

你必須做的是將這些回調存儲在某個地方,直到完成。這裏有一個例子:

final List<Target> targets = new ArrayList<Target>(); 
for (int i = 0; i < 3; i++) { 
    final int k=i; 
    Target target = new Target() { 

     @Override 
     public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {       
      Log.i("Targets", "Loaded: " + k); 
      targets.remove(this);     
     } 

     @Override 
     public void onBitmapFailed(Drawable errorDrawable) { 
      targets.remove(this); 
     } 

     @Override 
     public void onPrepareLoad(Drawable placeHolderDrawable) { 
      Log.i("Targets", "Preparing: " + k); 
     } 
    } 
    targets.add(target); 
    Picasso.with(this) 
     .load(ListA.get(i).getImage()) // Start loading the current target 
     .resize(100, 100) 
     .into(target); 
} 

要確保列表中沒有得到GC'd也使targets一個全局變量。

+0

好的。非常感謝你。它爲我工作 – dungtv

+0

令人驚歎。簡單而有效的解決方案 – GensaGames

+0

我正在尋找一個解決方案,以等待所有目標加載位圖。我需要這個在加載完所有東西之後給對象充氣。你有什麼想法做到這一點? – StevenTB