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
- xml文件解析并显示到Android手机 spinner的应用
- Android解析XML文件到Spinner中
- 解析xml文件用spinner显示相关问题
- android解析xml文件,并写入到短信中
- RSS阅读器(使用android解析技术解析网络中的xml文件并以列表的形式显示出来)
- RSS阅读器(使用android解析技术解析xml文件并以列表的形式显示出来)
- RSS阅读器(使用android解析技术解析xml文件并以列表的形式显示出来)
- java 取到xml文件,并解析
- android下载文件到应用的文件目录并安装
- Android如何获取asset下的xml文件,并解析
- Android下载文件显示到ImageView并保存在手机SD卡
- android 解析并显示dicom文件的数据和图像
- android应用开发之利用SAX、DOM和Pull实现对XML文件的解析并进行单元测试
- Android HTTP下载XML文件并解析
- Android spinner省市联动以及Xml解析
- 最完整的获取android手机图片并显示到控件的解决方案
- android 保存网上图片到手机并读取显示
- 解析XML文件,并将信息显示在窗体上
- Struts2中struts.xml文件的加载过程
- Median of Two Sorted Arrays
- mongodb 按照时间聚类 java
- 仿qq聊天界面
- asp.net如何解决传递中文参数乱码问题
- xml文件解析并显示到Android手机 spinner的应用
- 快速创建九宫格
- HDU 1702 ACboy needs your help again!(模拟 队列 栈)
- Hive函数row_number实现
- Hibernate自学详细笔记
- LeetCode之Best Time to Buy and Sell Stock
- 间隔300ms第一次一个管亮流动一次,第二次两个管亮流动。依次到8个管亮,然后重复此过程
- android传递数据方式2--通过剪切板传数据
- Javascript基础(一)