2011-09-17 19 views
0

私はAndroidアプリでウェブサイトのAPIを実装しようとしています。このAPIの一部には配列があり、配列には画像URLの配列が含まれています。今、私は配列をうまく反復処理することができ、イメージURLを描画可能なものに変換するAsyncTaskを作成しました。私は上記の投稿機能は、別のループ内から呼び出されローカル変数へのAsyncTaskの結果

void createPhotoPost(JSONObject postData, LinearLayout myPostHolder) { 
    try { 
     ImageView myImage = new ImageView(myContext); 
     JSONArray photosArray = new JSONArray(postData.getString("photos")); 
     for(int i = 0; i < photosArray.length(); i++) { 
      JSONObject thisPhoto = photosArray.getJSONObject(i); 
      JSONArray sizesArray = new JSONArray(thisPhoto.getString("alt_sizes")); 
      JSONObject largest = sizesArray.getJSONObject(0); 
      new GetPhotoSet(this).execute(largest.getString("url")); 
     } 
     myPostHolder.addView(myImage); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

:しかし、私は(私はループ内でプログラム的に作成しています)ImageViewの中にそれらのドローアブルを得るための良い方法はありません。上のコードでわかるように、ImageView myImageには、最終的にGetPhotoSet.executeの実行呼び出しによって返されるドロアブルが含まれている必要があります。何か案は?ありがとう!

その他の詳細:AsyncTaskによってデータが返される方法は、ImageView myImageを宣言したループの外にあるため、myImageが存在することを認識せず、参照できません。ループのさまざまな反復から、この時点までにおそらくいくつかのmyImageが生成されます)

答えて

3

ニック、それはonPostExecute()です。 ImageViewonPostExecute()に作成し、そこからActivityに追加してください。一連の画像をループする場合は、publishProgress()を使用してこれを行うこともできます。あなたの例では、ループ全体を自分のタスクのdoInBackground()に移動する必要があります。

+0

恐ろしい、完璧な意味があります。ありがとうございました! – Nick

関連する問題