我有一个用于android中可扩展视图的代码,该代码正在将有限的数据加载到适配器中。我想自定义数据,并且坚持使用Arrays.asList()语法。
这是现在加载数据的代码:
public static List<Genre> makeGenres()
{
return Arrays.asList(makeRockGenre(),
makeJazzGenre(),
makeClassicGenre(),
makeSalsaGenre(),
makeBluegrassGenre());
}
public static Genre makeRockGenre()
{
return new Genre("Rock", makeRockArtists(), R.drawable.ic_music_note_black_24dp);
}
public static List<Artist> makeRockArtists()
{
Artist queen = new Artist("Queen", true);
Artist styx = new Artist("Styx", false);
Artist reoSpeedwagon = new Artist("REO Speedwagon", false);
Artist boston = new Artist("Boston", true);
return Arrays.asList(queen, styx, reoSpeedwagon, boston);
}
注意:其余类似方法在这里已跳过。
如您所见, makeGenres()返回一个通过Arrays.asList()创建的列表。 ArraysasList在这里调用五个方法,每个方法都返回一个数组。我要执行的操作不是调用这五个方法,而是要创建具有'n'个数组的Arrays.asList()。
我需要做些类似的事情:
public static List<Genre> makeGenres()
{
return MakeArrayAsList();
}
public static List<Genre> MakeArrayAsList()
{
for(int i=0;i<20;i++)
{
//add 20 array items like this
newGenre("Rock",makeRockArtists(),R.drawable.ic_music_note_black_24dp);
}
//make Array.asList() using those 20 items to return
// return Arrays.asList
}
基本上,好像我可以在 Arrays.asList 中调用makeRockGenre()'n 次一样,而不是原始代码中的五个方法。
答案 0 :(得分:2)
您要使用动态数量的参数调用Arrays.asList
吗?
Arrays.asList
是可变参数,因此我们可以将数组传递给它:
public static List<Genre> MakeArrayAsList() {
Genre[] genres = new Genre[20];
for(int i=0;i<20;i++) {
//add 20 array items like this
genres[i] = newGenre("Rock",makeRockArtists(),R.drawable.ic_music_note_black_24dp);
}
//make Array.asList() using those 20 items to return
// return Arrays.asList
return Arrays.asList(genres);
}
但是您实际上可能不想使用Arrays.asList
。
你到底想要什么?