如何在Android

时间:2018-07-25 23:18:58

标签: java android arrays list arraylist

我有一个用于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 次一样,而不是原始代码中的五个方法。

1 个答案:

答案 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
你到底想要什么?