2017-09-08 10 views
0

ListViewで都市リストを表示したいXML解析を使用していますが、Logcatでは応答がありますが、リストビューでは最後のアイテムしか表示されませんでした。その中に。 このListViewの最後のアイテムをXML解析を使用して表示

私のXML解析コードを解決するために助けてください

class XmlPullParserHandler { 
    private List<City> cityArrayList = new ArrayList<City>(); 
    private City cities; 
    private String text; 

    public List<City> getCitiess() { 
     return cities; 
    } 

    public List<City> parse(InputStream is) { 
     try { 
      XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 
      factory.setNamespaceAware(true); 
      XmlPullParser parser = factory.newPullParser(); 

      parser.setInput(is, null); 

      int eventType = parser.getEventType(); 
      while (eventType != XmlPullParser.END_DOCUMENT) { 
       String tagname = parser.getName(); 
       switch (eventType) { 
        case XmlPullParser.START_TAG: 
         if (tagname.equalsIgnoreCase("city")) { 
          // create a new instance of cities 
          cities = new City(); 
         } 
         break; 

        case XmlPullParser.TEXT: 
         text = parser.getText(); 
         break; 

        case XmlPullParser.END_TAG: 
         if (tagname.equalsIgnoreCase("Area")) { 
          // add cities object to list 
          cityArrayList.add(cities); 
         } else if (tagname.equalsIgnoreCase("AreaName") { 
          cities.setAreaName(text); 
         } else if (tagname.equalsIgnoreCase("CityCode")) { 
          cities.setCityCode(text); 
         } else if (tagname.equalsIgnoreCase("AreaCode")) { 
          cities.setAreaCode(text); 
         } 
         break; 

        default: 
         break; 
       } 
       eventType = parser.next(); 
      } 

     } catch (XmlPullParserException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return cityArrayList; 
    } 
} 

以下の設定アダプタのコードのように見えるが

List<City> cities = null; 
     try { 
      XmlPullParserHandler parser = new XmlPullParserHandler(); 
      InputStream is = getAssets().open("cityapi/citylist.xml"); 
      cities = parser.parse(is); 

      AdapterSearchCity adapter = new AdapterSearchCity(ActivityCitySearch.this, cities); 
      searchListview.setAdapter(adapter); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

を下回っている私のXMLは私が

<city> 
<Area> 
<AreaName>L.A</AreaName> 
<CityCode>ABC</CityCode> 
<AreaCode>XYZ</AreaCode> 
</Area> 
</city> 

以下のようなものです私が間違っている場所を取得しないでください

+0

デバッグしましたか? cityArrayListのサイズは? – Raghavendra

+0

ええと、私はデバッグ... –

+0

都市arraylistのサイズは? – Raghavendra

答えて

0

私は

間違っていた解決策を見つけた私は、それはこのようにする必要があり「都市」代わりの「エリア」

を置きます。

case XmlPullParser.START_TAG: 
         if (tagname.equalsIgnoreCase("Area")) { 
          // create a new instance of cities 
          cities = new City(); 
         } 
         break; 
関連する問題