2015-02-25 3 views
-1

Итак, у меня есть Arraylist, содержащий Strings, которые являются URL-адресами. Затем я разбираю эти строки в ImageLoader. Моя проблема в том, что int в цикле, кажется, не увеличивается, однако я знаете, что цикл является циклом, потому что я получаю тот же вывод столько же раз, сколько размер Arraylist.My for loop не прирастает

Вот код:

for (int i = 0; i < AsyncDownloader.imageList.size(); i++) { 

     String imageUrl = AsyncDownloader.imageList.get(i); 
     imageView = new ImageView(mContext); 
     imageView.setLayoutParams(new GridView.LayoutParams(1080, 440)); 
     imageView.setAdjustViewBounds(false); 
     imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
     imageView.setPadding(2, 2, 2, 2); 

     Log.i(TAG, "Check? " + i); 
     imageLoader.displayImage(imageUrl, imageView, options); 
     return imageView; 
    } 

Debug Log:

02-25 11:30:27.584 7299-7299/my.app I/Debug﹕ Check? 0 02-25 11:30:27.594 7299-7299/my.app I/Debug﹕ Check? 0 02-25 11:30:27.614 7299-7299/my.app I/Debug﹕ Check? 0 02-25 11:30:27.744 7299-7299/my.app I/Debug﹕ Check? 0...

Я попытался с помощью ListIterator, но это, кажется, чтобы дать мне тот же результат, и я попытался размещения i++ внутри цикла, поэтому он запускается, но затем я получаю тот же результат, но с индексом 1.

I также знаю, что это не содержимое ArrayList, потому что я также регистрирую это заранее, чтобы проверить при загрузке URL-адресов.

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

Любая помощь будет оценена по достоинству.

+3

«однако я знаю, что цикл зацикливается» - на самом деле это не так. Вы безоговорочно возвращаетесь с первой итерации цикла. Я предполагаю, что вы зацикливаетесь на * вызывающем * коде, но вы этого нам не показали. –

+0

Вы возвращаете значение после одной итерации !!! – Kedarnath

+0

return statement - причина. – Prashant

ответ

0

Ваш вопрос находится в

return imageView; 

вы можете удалить его из внутри цикла. и делать, как показано ниже

List<imageView> listOfImages = new ArrayList<imageView>(); 
for (int i = 0; i < AsyncDownloader.imageList.size(); i++) { 
// leave your code as it is.. 
// before return statement just write this one 
listOfImages.add(imageView); 
// remove return statement from inside the loop 

} 
// after loop you can return listOfImages arraylist of imageview 

return listOfImages; 
+0

Хорошо, я попробую это сейчас и дам вам знать, как это происходит:) – AaronD

+0

Так что я только что попробовал то, что вы предложили, а потому, что это расширение класса BaseAdapter, и это в методе 'getView', оно не позволяет вернуть этот« список »и пытается сделать к «ImageView» и ошибке при запуске приложения. Я ценю вашу помощь кстати – AaronD

+0

Что такое тип возврата для этого метода? – Prashant

4
return imageView; 

Таким образом, ваш цикл выполняется только один раз, с i = 0.

6
return imageView; 

На этом этапе вы оставляете метод, не продолжая цикл.

+0

А я вижу, это имеет смысл. Но тогда как я могу вернуть изображениеView и все еще получить цикл в цикле? – AaronD

+0

Вы не можете обойти эту вещь – Kedarnath

+0

@AaronD, которая зависит от вашего требования и дизайна – Prashant

Смежные вопросы