2014-06-16 5 views
0

вывод моего обработанного XML-файла в лог-катке показывает все элементы, но моя активность показывает только последний элемент.pullParser Android дает все элементы в logcat, но не в приложении

Logcat:

06-16 22:06:19.780 9871-10111/notendop.norge I/System.out﹕ TIME: 23:00:00 
06-16 22:06:19.780 9871-10111/notendop.norge I/System.out﹕ DATE: 2014-06-16 
06-16 22:06:19.780 9871-10111/notendop.norge I/System.out﹕ regen VALUE 0 
06-16 22:06:19.780 9871-10111/notendop.norge I/System.out﹕ wind richting Nord-nordøst 
06-16 22:06:19.785 9871-10111/notendop.norge I/System.out﹕ wind Svak vind 
06-16 22:06:19.785 9871-10111/notendop.norge I/System.out﹕ temp 12 
06-16 22:06:19.785 9871-10111/notendop.norge I/System.out﹕ TIME: 00:00:00 
06-16 22:06:19.785 9871-10111/notendop.norge I/System.out﹕ DATE: 2014-06-17 
06-16 22:06:19.785 9871-10111/notendop.norge I/System.out﹕ regen VALUE 0 
06-16 22:06:19.785 9871-10111/notendop.norge I/System.out﹕ wind richting Øst-nordøst 
06-16 22:06:19.785 9871-10111/notendop.norge I/System.out﹕ wind Lett bris 

(часть) Код:

private ArrayList<NewsItem> parseNews(InputStream in) throws XmlPullParserException, IOException { 

    ArrayList<NewsItem> newsList = new ArrayList<NewsItem>(); 
    XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 
    XmlPullParser pullParser = factory.newPullParser(); 
    pullParser.setInput(in, "UTF-8"); 

    int eventType = pullParser.getEventType(); 

    NewsItem item = null; 

    while (eventType != XmlPullParser.END_DOCUMENT) {String tagName; 
     if (eventType == XmlPullParser.START_TAG) 
     {tagName = pullParser.getName(); 
     if (tagName.equals(TAG_TABULAR)) {item = new NewsItem();} 

     else if (tagName.equals(TAG_TIME)) { 
      if (item != null) { 
       item.mTime_SV = pullParser.getAttributeValue(null, "from"); 
       StringTokenizer tokens = new StringTokenizer(item.mTime_SV, "T"); 
       item.mDate = tokens.nextToken(); 
       item.mTime = tokens.nextToken(); 
       System.out.println("TIME: " + item.mTime); 
       System.out.println("DATE: " + item.mDate); 
      } 
     } 

     else if (tagName.equals(TAG_TEMP)) { 
      if (item != null) { 
       item.mTemp_SV = pullParser.getAttributeValue(null,"value"); 
       System.out.println("temp " + item.mTemp_SV); 
      } 
     } 

     else if (tagName.equals(TAG_REGEN_MIN)) { 
      if (item != null) { 
       item.mRegen_min_SV = pullParser.getAttributeValue(null,"value"); 
       System.out.println("regen VALUE " + item.mRegen_min_SV); 
      } 
     } 

     else if (tagName.equals(TAG_WIND_DESC)) { 
      if (item != null) { 
       item.mWind_desc_SV = pullParser.getAttributeValue(null,"name"); 
       System.out.println("wind " + item.mWind_desc_SV); 
      } 
     } 

     else if (tagName.equals(TAG_WIND_RICHTING)) { 
      if (item != null) { 
       item.mWind_richting_SV = pullParser.getAttributeValue(null,"name"); 
       System.out.println("wind richting " + item.mWind_richting_SV); 
      } 
     } 

      // eventType = pullParser.next(); 
    } 

    else if (eventType == XmlPullParser.END_TAG) { tagName = pullParser.getName(); 
     if (tagName.equals(TAG_TABULAR)) { 
      newsList.add(item); 
      item = null; 
     } 
    } 

    eventType = pullParser.next(); 
    } 

    return newsList; 

    } 

я упускаю петлю или что-то еще?

+0

опубликовать XML .. –

+0

это ссылка на файл XML: http://www.yr.no/sted/Norge/Sogn_og_Fjordane /Gloppen/Sandane/varsel.xml – user2378812

ответ

0

хорошо каждый раз вы попали в тег TAG_TABULAR вы делаете это

tagName.equals(TAG_TABULAR)) {item = new NewsItem(); 

так ничего, что было уже в списке получить уничтожены.

может быть, вы должны форматировать ваш код лучше, и вы, возможно, поймал это

+0

Этот код работает в другом действии, показывая все записи. – user2378812

+0

хорошо, очевидно, что-то другое между 2, если оно работает. проверьте xml и дважды проверьте рабочий, но если какой-либо тэг 'TAG_TABULAR' появится более одного раза в xml, тогда ваш список будет удален в следующий раз, когда он обнаружит этот тег – tyczj