Как сделать Custom Arrays.asList в android

У меня есть код для расширяемого представления в 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 вызывает пять методов, внутри каждого из которых возвращается массив. Что я хочу сделать, так это вместо того, чтобы вызывать эти пять методов, я хочу создать 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  

}

По сути, как будто я могу вызвать makeRockGenre () 'п' раз внутри Arrays.asList, а не пять методов в исходном коде.

Можете ли вы использовать все элементы ArrayList, add, а затем вернуть ArrayList?

StaticBeagle 26.07.2018 01:31
Проблема XY
Johannes Kuhn 26.07.2018 03:50
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
259
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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.
. Чего ты действительно хочешь?

Спасибо. Это устранило проблему, хотя мне пришлось внести небольшую поправку - «Жанр [] жанры = новый жанр [20];»

Nabil Mohammed Nalakath 26.07.2018 12:06

Другие вопросы по теме