Я новичок в Java, пришёл из C / C ++ фона.Я пытаюсь написать приложение для музыкального плеера для Android и работаю над функцией сканирования библиотеки.Я хочу иметь иерархическую базу данных в формате Artist -> Album -> Song, где Artist имеет имя и группу альбомов, Album имеет имя, год и группу композиций, а композицию имеет название и номер дорожки.и местоположение файла.
Я создал три класса для хранения этой информации:
public class libraryElementArtist
{
public String name;
public ArrayList<libraryElementAlbum> albums;
}
public class libraryElementAlbum
{
public String name;
public String year;
public ArrayList<libraryElementSong> songs;
}
public class libraryElementSong
{
public String name;
public int num;
public String filename;
}
Идея заполнить их проста - отсканировать каждый файл и сначала добавить его исполнителя, а затем альбом,тогда песня.Каждый раз он проверяет, чтобы убедиться, что артист / альбом еще не существует, прежде чем создавать новый.
По сути, я начинаю создавать ArrayList для хранения информации об исполнителе, например:
ArrayList<libraryElementArtist> libraryData = new ArrayList<libraryElementArtist>();
Затем, чтобы добавить исполнителя в базу данных:
libraryElementArtist newEntry = new libraryElementArtist();
newEntry.name = song_artist;
libraryData.add(newEntry);
А затем добавить альбом:
libraryElementAlbum newEntry = new libraryElementAlbum();
newEntry.name = song_album;
libraryData.get(artistIndex).albums.add(newEntry);
, где artistIndex - это индекс исполнителя альбома в верхней части.Уровень Artist Array.
Когда я запускаю это на устройстве и просматриваю его в отладчике, элементы libraryElementArtist вставляются в массив libraryData, и их имена корректно заполняются. Однако, поле альбомов отображается какnull и попытка добавить альбомы не заполняет никаких данных.
Извините, если это вопрос нуба, как я сказал, что я новичок в Java, и я искал и не могу найти то, что янаходясь в поиске.Кроме того, именно так я и выполнил бы такую задачу в C ++, но не уверен, что это правильный путь Java.