对于任何遇到我措辞不好的问题的人来说,解决这个问题的方法是实现自己的循环来填充列表。
最初,我使用了一个 java 增强的 for 循环,如下所示:
for(Entry<Integer, TV_Episode_v2> e : rc.shows.get(showIndex).seasons.get(mapSeasonIndex).episodes.entrySet()){
episodeslistmodel.add(e.getKey()-1,e.getValue());
}
出于某种原因,如果 episodes.size() 大于 15,此方法将遍历 null 结果,因此我实现了自己的迭代方法:
//Add elements to list model
int i = 0; //variable to show the index
int c = 0; //variable to count the number of episodes
while(c < rc.shows.get(showIndex).seasons.get(seasonIndex+1).episodes.size()){
if(rc.shows.get(showIndex).seasons.get(seasonIndex+1).episodes.containsKey(i)){ //if the season contains the key i
episodeslistmodel.add(i-1, rc.shows.get(showIndex).seasons.get(seasonIndex+1).episodes.get(i)); //add to the list
c++; //increment up to count the number of objects found
}
i++;
}
这不会产生错误,并将所有项目放在 JList 中的适当位置。我希望这对阅读这篇文章的人有所帮助。