【问题标题】:How to make Make Custom Arrays.asList in android如何在android中制作自定义Arrays.asList
【发布时间】:2019-01-02 20:46:57
【问题描述】:

我在 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);
    }

注意:-其他类似的方法在此略过。

如您所见,ma​​keGenres() 返回一个通过 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' 次,而不是原始代码中的五个方法。

【问题讨论】:

  • 你可以使用ArrayListadd所有元素然后返回ArrayList吗?

标签: java android arrays list arraylist


【解决方案1】:

您想使用动态数量的参数调用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
你真正想要什么?

【讨论】:

  • 谢谢。这解决了这个问题,尽管我不得不做一个小调整 - “ Genre[] Genres = new Genre[20];”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多