2011-09-17 7 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 myImage는 결국 GetPhotoSet.execute의 실행 호출에 의해 반환되는 드로어 블을 포함해야합니다. 어떤 아이디어? 감사!

추가 세부 정보 : AsyncTask에 의해 데이터가 반환되는 메서드는 ImageView myImage를 선언 한 루프 외부에 있으므로 myImage가 있는지, 참조 할 수 없는지 (그리고 거기에 루프의 다른 반복에서부터 아마도이 시점까지는 소수의 myImages)

답변

3

Nick, 그게 onPostExecute()입니다. ImageViewonPostExecute()에 작성하고 거기에서 Activity에 추가하십시오. 일련의 이미지를 반복 할 경우 publishProgress()을 사용하여이 작업을 수행 할 수도 있습니다. 귀하의 예에서 전체 루프를 작업의 doInBackground()으로 옮겨야합니다.

+0

굉장하고 완벽합니다. 고맙습니다! – Nick

관련 문제