我有以下代码:
CustomArrayAdapter adapter;
Set<Integer> checkedItems;
Iterator<Integer> it;
Model element;
adapter = (CustomArrayAdapter) getListAdapter();
checkedItems = adapter.getCheckedItems();
it = checkedItems.iterator();
int size = checkedItems.size();
for (int i = 0; i < size; i++) {
element = adapter.getItem(it.next());
// Do whatever
}
尝试使用adapter.getItem(it.next())获取listview项会抛出错误NoSuchElementException。
在我的具体情况中,大小为1.最初我将Iterator设置为第一次外部循环,所以我猜它放在第一个元素。在第一次迭代中,我猜it.next()指向第一个元素,但它似乎没有引发错误。
我做错了什么?
答案 0 :(得分:1)
我认为您的问题是,调用it.next()
会返回下一个对象,这意味着如果您从0开始,it.next()
将返回1.因为您{{1}其中只有1个元素,该元素位于索引0而不是1,这就解释了为什么你得到ListView
。
要解决此问题,您可以调用NoSuchElementException
方法Iterator
,如果有另一个元素,则返回hasNext
,如果没有,则返回true
,然后调用{ {1}}。也许类似于以下内容:
false
要处理获取第一个元素(索引0),您可以进行简单的检查:
element = adapter.getItem(it.next())