Как загрузить несколько изображений в ImageViews (parse.com)

Я сохраняю 5 изображений в своем классе на parse.com. Я могу загрузить одно изображение на основе objectid в imageView. Мне нужно загрузить все 5 изображений в мои 5 ImageViews. Как я могу это сделать. Любая помощь будет оценена по достоинству. благодаря

ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("Footer"); // Locate the objectId from the class query.getInBackground("tNp607WyQD", new GetCallback<ParseObject>() { public void done(ParseObject object,ParseException e) { // TODO Auto-generated method stub // Locate the column named "ImageName" and set // the string ParseFile fileObject = (ParseFile) object.get("imageFile"); fileObject.getDataInBackground(new GetDataCallback() { public void done(byte[] data,ParseException e) { if (e == null) { Log.d("test","We've got data in data."); // Decode the Byte[] into // Bitmap Bitmap bmp = BitmapFactory.decodeByteArray(data, 0,data.length); // Get the ImageView from main.xml //ImageView image = (ImageView) findViewById(R.id.ad1); ImageView ad1=(ImageView) findViewById(R.id.ad1); // Set the Bitmap into the // ImageView ad1.setImageBitmap(bmp); // Close progress dialog progressDialog.dismiss(); } else { Log.d("test", "There was a problem downloading the data."); } } }); } }); }} 

Я могу решить это с помощью класса imageloader:

 public class Login extends Activity { public ImageLoader imgl; EditText fullname, mobilenumber, occupation; Button save; ImageView ad1,ad2,ad3,ad4,ad5,ad6; List<ParseObject> ob; private ImageView[] imgs = new ImageView[5]; ProgressDialog progressDialog; int i=0; HorizontalScrollView horizontalScrollView1; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.userdata); imgl=new ImageLoader(getApplicationContext()); fullname = (EditText) findViewById(R.id.fullname) ; mobilenumber = (EditText) findViewById(R.id.mobile) ; occupation = (EditText) findViewById(R.id.occupation) ; save=(Button) findViewById(R.id.btnSave); horizontalScrollView1=(HorizontalScrollView) findViewById(R.id.horizontalScrollView1); ad1=(ImageView) findViewById(R.id.ad1); ad2=(ImageView) findViewById(R.id.ad2); ad3=(ImageView) findViewById(R.id.ad3); ad4=(ImageView) findViewById(R.id.ad4); ad5=(ImageView) findViewById(R.id.ad5); ad6=(ImageView) findViewById(R.id.ad6); imgs[0] = ad2; imgs[1] = ad3; imgs[2] = ad4; imgs[3] = ad5; imgs[4] = ad6; progressDialog= ProgressDialog.show(Login.this, "","Downloading Image...", true); // Locate the class table named "Footer" in Parse.com ParseQuery<ParseObject> query = new ParseQuery<ParseObject>( "Footer"); query.orderByDescending("updatedAt"); try { ob = query.find(); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } for (ParseObject country : ob) { ParseFile image = (ParseFile) country.get("imageFile"); imgl.DisplayImage(image.getUrl(), imgs[i]); i=i+1; System.out.println("the urls are"+image.getUrl()); progressDialog.dismiss(); } } } 

Как насчет этого? (Может быть, это очень грубо)

Поскольку у вас есть 5 (определенных) изображений, создайте массив изображений.

 private ImageView iv1, iv2, iv3, iv4, iv5; private ImageView[] imgs; 

В onCreate (),

 imgs = new ImageView[5]; iv1 = (ImageView) findViewById(R.id.iv1); iv2 = (ImageView) findViewById(R.id.iv2); iv3 = (ImageView) findViewById(R.id.iv3); 

и так далее

Затем установите массив imageview, например,

 imgs[0] = iv1; imgs[1] = iv2; imgs[2] = iv3; 

//скоро

В вашем ParseQuery, предполагая, что вы получите требуемый список ParseObjects (5, я считаю), в готовом методе GetCallBack,

 public void done(List<ParseObject> objects,ParseException e) { for(int i =0 ; i < objects.size(); i++){ ParseObject object = objects.get(i); ParseFile fileObject = (ParseFile) object.get("imageFile"); fileObject.getDataInBackground(new GetDataCallback() { public void done(byte[] data,ParseException e) { if (e == null) { Bitmap bmp = BitmapFactory.decodeByteArray(data, 0,data.length); imgs[i].setImageBitmap(bmp); } else { Log.d("test", "There was a problem downloading the data."); } } }); } progressDialog.dismiss(); } 

В ParseQuery, чтобы получить изображения в порядке возрастания createdAt, используйте

 query.orderByAscending("createdAt"); 

Просто добавьте, если вы столкнулись с какой-либо проблемой с переменной «i» в ParseQuery (особенно вам не разрешается использовать i внутри done () и попросит вас объявить ее окончательной), дайте мне знать!

Вам необходимо реорганизовать свой код таким образом, чтобы вы могли создать индивидуальный экземпляр задачи загрузки.

Например, создайте класс FooterQuery, который обертывает ParseQuery. Когда вы создаете объект, вы передаете в parseId и идентификатор ресурса ImageView, в который он должен быть загружен.

Если ImageView управляется AdapterView (список List или Grid), он будет более сложным.