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

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;
}


@Override
public 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;
}
@Override
public 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;
}


@Override
public 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文件

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值