У меня есть приложение на Android, и я пытаюсь получить некоторые фотографии из Интернета, используя поток AsyncTask
.
Дело в том, что я извлекаю эти изображения в loop
, поэтому для каждого индекса я запускаю новый поток AsyncTask
. Каждый поток возвращает изображение (imageView).
И вот моя проблема:
Запущенные темы возвращают изображения асинхронно, поэтому, когда я пытаюсь получить доступ к списку, в котором хранятся эти изображения, я получаю ArrayIndexOutofBounds
.
Это мой код:
for(int i=0;i<friends.size();i++)
{
getUserPic(friends.get(i).getId());
}
Это getUserPic
метод:
public void getUserPic(String userID){
imageURL = "http://graph.facebook.com/"+userID+"/picture?type=small";
new Task().execute(new String[] {imageURL});
}
А вот и нить:
private class Task extends AsyncTask<String, Void, Bitmap>{
@Override
public Bitmap doInBackground(String...arg0){
DefaultHttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(arg0[0]);
try{
HttpResponse execute = client.execute(httpGet);
InputStream content = execute.getEntity().getContent();
profilePicBitmap=BitmapFactory.decodeStream(content);
}
catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return profilePicBitmap;
}
@Override
public void onPostExecute(Bitmap result) {
imageView.setImageBitmap(result);
arrayImageView.add(imageView);
}
}
Так что я хочу сделать что-то вроде:
List<ImageView> arrayImageView=new ArrayList<ImageView>();
for(i....)
{
arrayImageView[i]=getUserPic(...);
}
public ImageView getUserPic(String userID){
imageURL = "http://graph.facebook.com/"+userID+"/picture?type=small";
new Task().execute(new String[] {imageURL});
return ImageView;
}
Я имею в виду, что каждый ImageView
возврат потоком AsyncTask будет возвращаться также методом getUserPic
. Поэтому мне было бы легче их отслеживать.
Вопрос: Как мне поступить, чтобы возвращаемое AsynTask
изображение было также переменной, которую возвращает getUserPic()
.
Надеюсь, вы понимаете, о чем я. Thx