2012-02-20 40 views
1

我試圖從Collection返回序列並將其應用於TextView。當我設置文本時,只設置了一個值,即序列的最後一個值。當我打印序列時,要檢查它是否正常工作,所有東西都打印正確。據我所知,我正在通過說迭代器hasNext(),得到next(),並在這種情況下,軌道的名稱。我已經嘗試了其他一些方法來正確設置集合,但是在研究瞭如何使用Iterator和Collection之後,我總是用這種方法結束。我錯過了什麼?集合迭代器不返回每​​個值

public static String getTopTracks(String mArtistName) { 
    String returnTopTracks = ""; 
    Collection<Track> top = Artist.getTopTracks(mArtistName, key); 
    Iterator<Track> itr = top.iterator(); 
    while (itr.hasNext()) { 
     returnTopTracks = itr.next().getName(); 
     System.out.println(returnTopTracks); 
    } 
    return returnTopTracks; 
} 

回答

2

你可能想回到你最喜愛曲目作爲一個集合

public static Collection<String> getTopTracks(String mArtistName) { 
    String returnTopTrack = ""; 
    Collection<Track> top = Artist.getTopTracks(mArtistName, key); 
    Collection<String> returnTopTracks = new ArrayList<String>(); 
    Iterator<Track> itr = top.iterator(); 
    while (itr.hasNext()) {   
     returnTopTrack = itr.next().getName(); 
     returnTopTracks.add(returnTopTrack); 
     System.out.println(returnTopTrack); 
    } 
    return returnTopTracks; 

}

+0

是的,這沒有把戲。 :) – adneal 2012-02-20 02:01:44

0

沒有什麼錯,你關於發佈到Iterator,或者它使用的代碼;它會調用集合的getName()方法中的每個對象。然而,只有返回最後一個的事實可能是一個問題。

從您的描述中看來,您想要返回每個TrackgetName()方法所反映的所有字符串。您需要返回已放入所有人的List,或者可能只需將該String連接在循環中。