所以我有一个Arraylist
包含Strings
这些是网址,然后我将这些字符串解析为ImageLoader。我的问题是循环中的int
似乎没有要增加,但我知道循环是循环的,因为我得到的输出与Arraylist
的大小相同。
以下是代码:
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;
}
调试日志:
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。
我也知道这不是ArrayList
的内容,因为我也会事先记录下来检查下载网址的时间。
我看过类似的问题,但是他们的代码中似乎都有问题,而且我已经在这里提出的代码已被建议作为修复。
任何帮助将不胜感激。
答案 0 :(得分:6)
return imageView;
此时您将离开方法而不继续循环。
答案 1 :(得分:4)
return imageView;
因此,您的循环只执行一次,i = 0
。
答案 2 :(得分: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;