Вы, похоже, ожидаете магического изменения name
между проверками:
if (name.equalsIgnoreCase(SONGS)) {
songs = new ArrayList<SongMousika>();
if(name.equalsIgnoreCase(SONG)) {
Как это будет SONG
и SONGS
? Вы должны продолжать тянуть XML и реагировать на каждое имя элемента по-разному в цикле . Таким образом, вы, вероятно, будете иметь кучу if/else if
операторов без вложенности при реагировании на событие START_TAG. (Между прочим, вполне вероятно, стоит потянуть обработку этого в отдельный метод.)
РЕДАКТИРОВАТЬ: Хорошо, поэтому вам нужно, чтобы каждая итерация цикла просто реагировала на один тег . Таким образом, ваша обработка начального тега будет выглядеть примерно так:
case XmlPullParser.START_TAG:
name = parser.getName();
if (name.equalsIgnoreCase(CATEGORY)){
currentCategory = new TopMousika();
currentCategory.setId(parser.getAttributeValue(0));
currentCategory.setId(parser.getAttributeValue(1));
} else if (currentCategory != null) {
if (name.equalsIgnoreCase(NAME)){
currentCategory.setName(parser.nextText());
} else if (name.equalsIgnoreCase(DESCRIPTION)){
currentCategory.setDescription(parser.nextText());
} else if (name.equalsIgnoreCase(THUMBNAIL)){
currentCategory.setThumbnail(parser.nextText());
} else if (name.equalsIgnoreCase(SONGS)){
songs = new ArrayList<SongMousika>();
} else if (songs != null) {
if(name.equalsIgnoreCase(SONG)) {
currentSong = new SongMousika();
currentSong.setId(parser.getAttributeValue(0));
Log.d("TEST", "OK");
songs.add(currentSong);
} else if (currentSong != null) {
else if (name.equalsIgnoreCase(TITLE)) {
Log.d("TEST", "OK2");
currentSong.setTitle(parser.nextText());
} else if (name.equalsIgnoreCase(SINGER)){
currentSong.setSinger(parser.nextText());
} else if (name.equalsIgnoreCase(THUMBNAIL))
// etc
}
}
}
Обратите внимание, что при любом проходе через него мы никогда не проверяем наличие у name
нескольких значений - мы говорим:
- Мы начинаем новую категорию?
- Если это так, создайте его и запомните - затем переходите к следующей итерации.
- Если нет (и если у нас есть категория), мы начинаем новый список песен?
- Если это так, создайте его и запомните - затем переходите к следующей итерации.
- Если нет (и если у нас есть список песен), мы начинаем новую песню?
- Если это так, создайте его и запомните - затем переходите к следующей итерации.
- Если нет (и если у нас есть песня) ...
- Мы читаем заголовок? Если это так, прочитайте текст и установите его, а затем продолжайте.
- Мы читаем певца? Если это так, прочитайте текст и установите его, а затем продолжайте.
- Читаем ли мы миниатюру? Если это так, прочитайте текст и установите его, а затем продолжайте.
- и т.д.