在我的Android应用程序中,我希望获得ArrayList
所选值的所有前后元素。我正在使用以下代码,但它不起作用。
ListIterator<Integer> iterator = photoall_id.listIterator();
while(iterator.hasNext())
{
new GetImage().execute(url);
System.out.println(iterator.next());
System.out.println(iterator.previous());
}
这反复给出random
个值。我想从ArrayList
的选定位置获取数据。
答案 0 :(得分:0)
当您打电话给Iterator.previous()
进行打印时,您必须再次调用Iterator.next()
,否则您可能会无限循环堆叠。
顺便说一句,最简单的解决方案是使用索引:
List<Integer> photoall_id= new ArrayList<Integer>();
int mySelectedId= 3;
int indexOfSelectedId = photoall_id.indexOf(mySelectedId);
if(indexOfSelectedId < 0)
return; //your value is not in the list
//Print previous values
for(int i = 0; i < indexOfSelectedId ; i++)
{
System.out.println(photoall_id.get(i));
}
//Print next values
for(int i = indexOfSelectedId + 1 ; i < photoall_id.size(); i++)
{
System.out.println(photoall_id.get(i));
}
或只在一个cicle中:
for(int i = 0 ; i < photoall_id.size(); i++)
{
if(i != indexOfSelectedId)
System.out.println(photoall_id.get(i));
}
答案 1 :(得分:0)
当您next()
后跟previous()
时,您的iterator
指针保持在同一位置。见documentation
请注意,对next和previous的交替调用将重复返回相同的元素。
我对此的建议是退后一步(previous()
)并向前迈出两步(next()
)。
ListIterator<Integer> iterator = photoall_id.listIterator();
while(iterator.hasNext())
{
new GetImage().execute(url);
if(iterator.hasPrevious())
{
System.out.println(iterator.previous());
iterator.next(); //Coming back to current position
System.out.println(iterator.next()); // to next to current
}
else
{
System.out.println(iterator.next());
}
}
希望这对你有所帮助。