我找到了关于这个主题的3-4个主题,但是他们没有任何帮助,因为我已经尝试了那里的人们为主题开放者提供的建议。它已经在我的代码中了。
// Set the images of users that own this item
// TODO refactor this
private LinkedHashSet<UserBasic> itemUsers;
Iterator<UserBasic> usersIterator = itemUsers.iterator();
// We have 4 imageViews available for displaying users avatars, but we might not need them all
ArrayList<Integer> initialUserAvatarViews = new ArrayList<Integer>();
initialUserAvatarViews.add(R.id.iItemProfileUserImageSlotOne);
initialUserAvatarViews.add(R.id.iItemProfileUserImageSlotTwo);
initialUserAvatarViews.add(R.id.iItemProfileUserImageSlotThree);
initialUserAvatarViews.add(R.id.iItemProfileUserImageSlotFour);
int initialUserAvatarViewsCount = initialUserAvatarViews.size();
int a = 0;
while (usersIterator.hasNext()) {
Log.d("LOOPING AT 263", "I CANT STOP LOOPING");
if (a < initialUserAvatarViewsCount) {
FetchableImageView fetchableImageView = (FetchableImageView) findViewById(initialUserAvatarViews.get(a));
fetchableImageView.setVisibility(View.VISIBLE);
fetchableImageView.setImage(C.API.WEB_ADDRESS + C.API.IMAGES_USERS_FOLDER_THUMBNAIL + usersIterator.next().getUserAvatar(),
R.drawable.images_default_avatar_male);
a++;
}
}
答案 0 :(得分:1)
通过调用usersIterator.next()来提前光标。可能你的执行流程停止进入IF循环,而next()永远不会被调用。这就是你获得无限循环的原因。确保为每次迭代调用usersIterator.next(),或者在IF条件失败时调用break。
答案 1 :(得分:1)
我认为发生了以下情况。有一次,在while循环中,你的变量等于initialUserAvatarViewsCount,所以if语句停止运行。因此,由于if语句不再运行,您停止调用userIterator.next(),这意味着迭代器将始终具有下一个,从而使您进入无限循环。
答案 2 :(得分:1)
hasNext()
返回true。它本身并没有做任何事情。
要移至下一个元素,因此hasNext
有可能返回false,您需要在某个时刻调用usersIterator.next()
。