2016-01-13 23 views
3

在我的android應用程序中,我想從ArrayList中獲取所有前一個和後一個元素的選定值。我正在使用下面的代碼,但它不工作。 從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的選定位置獲取數據。

+1

爲什麼在訪問ArrayList時不使用索引? –

+1

我同意@MustansarSaeed,只是使用一個循環,並用'list.get(i-1)'和'list.get(i + 1)'訪問元素。 – LordAnomander

+0

請給我詳細的 – krishna

回答

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)); 
} 
+0

重複獲取元素 – krishna

+0

你反覆的意思是什麼?我真的不明白你想要什麼 –

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()); 
    } 
} 

希望這對你有所幫助。

相關問題