【发布时间】:2017-09-08 10:00:10
【问题描述】:
我想使用 XML 解析在 ListView 中显示城市列表我在 Logcat 中得到响应,但在 ListView 中,只显示最后一项,我很多人尝试解决这个问题,但我陷入了困境。 请帮忙解决这个问题
我的 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>
我没有找到我错的地方请帮助我
【问题讨论】:
-
你调试了吗? cityArrayList 的大小是多少?
-
是的,我正在调试...
-
城市数组列表的大小是多少?
标签: android listview xml-parsing listviewitem