xml文件解析并显示到Android手机 spinner的应用

来源:互联网 发布:行程路线图制作软件 编辑:程序博客网 时间:2024/06/11 16:22

MainActivity

```package com.example.city_spinner;import java.io.IOException;import java.util.List;import org.xmlpull.v1.XmlPullParserException;import com.example.entity.*;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.widget.*;import android.widget.AdapterView.OnItemSelectedListener;public class MainActivity extends Activity {    private Spinner sp_province, sp_city, sp_district;    private List<Province> list;    private int current;    private ArrayAdapter arrprovince;    private ArrayAdapter arrcity;    private ArrayAdapter arrdistrict;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        sp_province = (Spinner) findViewById(R.id.sp_province);        sp_city = (Spinner) findViewById(R.id.sp_city);        sp_district = (Spinner) findViewById(R.id.sp_district);        Parser p = new Parser(this);        try {            list = p.parsercitys();        } catch (XmlPullParserException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        System.out.println(list);        System.out.println(list.get(0).getCitys());         arrprovince = new ArrayAdapter<Province>(this,                android.R.layout.simple_dropdown_item_1line,                android.R.id.text1, list);        sp_province.setAdapter(arrprovince);         arrcity = new ArrayAdapter<City>(this,                android.R.layout.simple_dropdown_item_1line,                android.R.id.text1, list.get(0).getCitys());        sp_city.setAdapter(arrcity);         arrdistrict = new ArrayAdapter<District>(this,                android.R.layout.simple_dropdown_item_1line,                android.R.id.text1, list.get(0).getCitys().get(0)                        .getDistricts());        sp_district.setAdapter(arrdistrict);      //------------设置监听事件        sp_province.setOnItemSelectedListener(new OnItemSelectedListener() {            @Override            public void onItemSelected(AdapterView<?> parent, View view,                    int position, long id) {                current = position;                arrcity = new ArrayAdapter<City>(                        MainActivity.this,                        android.R.layout.simple_dropdown_item_1line,                        android.R.id.text1, list.get(position).getCitys());                sp_city.setAdapter(arrcity);            }            @Override            public void onNothingSelected(AdapterView<?> parent) {            }        });        sp_city.setOnItemSelectedListener(new OnItemSelectedListener() {            @Override            public void onItemSelected(AdapterView<?> parent, View view,                    int position, long id) {                arrdistrict = new ArrayAdapter<District>(                        MainActivity.this,                        android.R.layout.simple_dropdown_item_1line,                        android.R.id.text1, list.get(current).getCitys()                                .get(position).getDistricts());                sp_district.setAdapter(arrdistrict);            }            @Override            public void onNothingSelected(AdapterView<?> parent) {            }        });    }}
以下是实体类City.java

package com.example.entity;

import java.io.Serializable;
import java.util.List;

public class City {

private String name;private String id;private List<District>districts;public City() {    super();    // TODO Auto-generated constructor stub}public City(String name, String id, List<District> districts) {    super();    this.name = name;    this.id = id;    this.districts = districts;}public String getName() {    return name;}public void setName(String name) {    this.name = name;}public String getId() {    return id;}public void setId(String id) {    this.id = id;}public List<District> getDistricts() {    return districts;}public void setDistricts(List<District> districts) {    this.districts = districts;}@Overridepublic String toString() {    return name;}

}

District.java

package com.example.entity;

public class District {
private String id;
private String name;

public District() {    super();    // TODO Auto-generated constructor stub}public District(String id, String name) {    super();    this.id = id;    this.name = name;}public String getId() {    return id;}public void setId(String id) {    this.id = id;}public String getName() {    return name;}public void setName(String name) {    this.name = name;}@Overridepublic String toString() {    return name;}

}

Province.java

package com.example.entity;

import java.util.List;

public class Province {

private String name;private String id;private  List<City>citys;public Province() {    super();    // TODO Auto-generated constructor stub}public Province(String name, String id, List<City> citys) {    super();    this.name = name;    this.id = id;    this.citys = citys;}public String getName() {    return name;}public void setName(String name) {    this.name = name;}public String getId() {    return id;}public void setId(String id) {    this.id = id;}public List<City> getCitys() {    return citys;}public void setCitys(List<City> citys) {    this.citys = citys;}@Overridepublic String toString() {    return name;}

}

工具类解析Parser.java

package com.example.entity;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;

import com.example.city_spinner.R;

import android.content.Context;

public class Parser {
private Context context;

public Parser(Context context) {    this.context = context;}public List<Province> parsercitys() throws XmlPullParserException,IOException {    Province province = null;    List<Province> provinces = null;    City city = null;    List<City> citys = null;    District district = null;    List<District> districts = null;    XmlPullParserFactory factory = XmlPullParserFactory.newInstance();    XmlPullParser parser = factory.newPullParser();    parser.setInput(            context.getResources().openRawResource(R.raw.citys_weather),            "utf-8");    int event = parser.getEventType();    while (event != XmlPullParser.END_DOCUMENT) {        switch (event) {        case XmlPullParser.START_DOCUMENT:            provinces = new ArrayList<Province>();            break;        case XmlPullParser.START_TAG:            String tagName = parser.getName();            if ("p".equals(tagName)) {                province = new Province();                citys = new ArrayList<City>();                int count = parser.getAttributeCount();                for (int i = 0; i < count; i++) {                    String name = parser.getAttributeName(i);                    String value = parser.getAttributeValue(i);                    if ("id".equals(name))                        province.setId(value);                }            } else if ("pn".equals(tagName))                province.setName(parser.nextText());            else if ("c".equals(tagName)) {                city = new City();                districts = new ArrayList<District>();                int count = parser.getAttributeCount();                for (int i = 0; i < count; i++) {                    String name = parser.getAttributeName(i);                    String value = parser.getAttributeValue(i);                    if ("id".equals(name))                        city.setId(value);                }            } else if ("cn".equals(tagName))                city.setName(parser.nextText());            else if ("d".equals(tagName)) {                district = new District();                int count = parser.getAttributeCount();                for (int i = 0; i < count; i++) {                    String name = parser.getAttributeName(i);                    String value = parser.getAttributeValue(i);                    if ("id".equals(name))                        district.setId(value);                    district.setName(parser.nextText());                    districts.add(district);                }            }            break;        case XmlPullParser.END_TAG:            if ("c".equals(parser.getName())) {                city.setDistricts(districts);                citys.add(city);            }            if ("p".equals(parser.getName())) {                province.setCitys(citys);                provinces.add(province);            }            break;        }        event = parser.next();    }    return provinces;}

}

“`
以下是被解析的xml文件

这里写图片描述

0 0
原创粉丝点击