我正在尝试从Collection
返回序列并将其应用于TextView
。当我设置文本时,只设置一个值,序列的最后一个。当我打印序列时,检查它是否正常工作,一切都正确打印。据我所知,我正在通过说迭代器hasNext()
,得到next()
并且在这种情况下是轨道的名称来做到这一点。我已经尝试了一些其他方法来正确设置Collection,但在研究了如何使用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;
}
答案 0 :(得分: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;
}
答案 1 :(得分:0)
您发布的有关Iterator
或其使用的代码没有任何问题;它将调用集合的getName()方法中的每个对象。然而,你只返回最后一个这一事实可能是一个问题。
根据您的说明,您似乎希望返回每个Track
的{{1}}方法所覆盖的所有字符串。您需要返回一个getName()
,并将其全部放入,或者只是在循环中连接List
。