У меня есть код для расширяемого представления в 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, а не пять методов в исходном коде.




Вы хотите вызвать 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];»
Можете ли вы использовать все элементы
ArrayList,add, а затем вернутьArrayList?