packagecom.example.hjw.androidday043;importandroid.content.res.XmlResourceParser;importandroid.support.v7.app.AppCompatActivity;importandroid.os.Bundle;importandroid.view.View;importandroid.widget.AdapterView;importandroid.widget.ArrayAdapter;importandroid.widget.Spinner;importorg.xmlpull.v1.XmlPullParserException;importjava.io.IOException;importjava.util.ArrayList;importjava.util.List;public class MainActivity extendsAppCompatActivity {privateSpinner spinner1,spinner2,spinner3;private Province province = null;private List list = new ArrayList();
ArrayAdapterarrayAdapter1;
ArrayAdapterarrayAdapter2;
ArrayAdapterarrayAdapter3;
@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinner3=(Spinner)findViewById(R.id.s3);
spinner2=(Spinner)findViewById(R.id.s2);
spinner1=(Spinner)findViewById(R.id.s1);
list=parser();
arrayAdapter1= new ArrayAdapter(MainActivity.this,R.layout.support_simple_spinner_dropdown_item,list);
arrayAdapter2= new ArrayAdapter(MainActivity.this,R.layout.support_simple_spinner_dropdown_item,list.get(0).getCitys());
arrayAdapter3= new ArrayAdapter(MainActivity.this,R.layout.support_simple_spinner_dropdown_item,list.get(0).getCitys().get(0).getDistricts());
spinner1.setAdapter(arrayAdapter1);
spinner1.setSelection(0, true);
spinner2.setAdapter(arrayAdapter2);
spinner2.setSelection(0, true);
spinner3.setAdapter(arrayAdapter3);
spinner3.setSelection(0, true);
spinner1.setOnItemSelectedListener(newAdapterView.OnItemSelectedListener() {
@Overridepublic void onItemSelected(AdapterView> parent, View view, int position, longid) {
province=list.get(position);
arrayAdapter2= new ArrayAdapter(MainActivity.this, R.layout.support_simple_spinner_dropdown_item, list.get(position).getCitys());
spinner2.setAdapter(arrayAdapter2);
}
@Overridepublic void onNothingSelected(AdapterView>parent) {
}
});
spinner2.setOnItemSelectedListener(newAdapterView.OnItemSelectedListener() {
@Overridepublic void onItemSelected(AdapterView> parent, View view, int position, longid) {
arrayAdapter3= new ArrayAdapter(MainActivity.this,R.layout.support_simple_spinner_dropdown_item,province.getCitys().get(position).getDistricts());
spinner3.setAdapter(arrayAdapter3);
}
@Overridepublic void onNothingSelected(AdapterView>parent) {
}
});
}public Listparser(){
Listlist =null;
Province province= null;
Listcities = null;
City city= null;
Listdistricts = null;
District district= null;//创建解析器,并制定解析的xml文件
XmlResourceParser parser =getResources().getXml(R.xml.cities);try{int type =parser.getEventType();while(type!=1) {
String tag= parser.getName();//获得标签名
switch(type) {caseXmlResourceParser.START_DOCUMENT:
list= new ArrayList();break;caseXmlResourceParser.START_TAG:if ("p".equals(tag)) {
province=newProvince();
cities= new ArrayList();int n =parser.getAttributeCount();for(int i=0 ;i
String name =parser.getAttributeName(i);
String value=parser.getAttributeValue(i);if("p_id".equals(name)){
province.setId(value);
}
}
}if ("pn".equals(tag)){//省名字
province.setName(parser.nextText());
}if ("c".equals(tag)){//城市
city = newCity();
districts= new ArrayList();int n =parser.getAttributeCount();for(int i=0 ;i
String name=parser.getAttributeName(i);
String value=parser.getAttributeValue(i);if("c_id".equals(name)){
city.setId(value);
}
}
}if ("cn".equals(tag)){
city.setName(parser.nextText());
}if ("d".equals(tag)){
district= newDistrict();int n =parser.getAttributeCount();for(int i=0 ;i
String name=parser.getAttributeName(i);
String value=parser.getAttributeValue(i);if("d_id".equals(name)){
district.setId(value);
}
}
district.setName(parser.nextText());
districts.add(district);
}break;caseXmlResourceParser.END_TAG:if ("c".equals(tag)){
city.setDistricts(districts);
cities.add(city);
}if("p".equals(tag)){
province.setCitys(cities);
list.add(province);
}break;default:break;
}
type=parser.next();
}
}catch(XmlPullParserException e) {//TODO Auto-generated catch block
e.printStackTrace();
}/*catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
catch(NumberFormatException e) {//TODO Auto-generated catch block
e.printStackTrace();
}catch(IOException e) {//TODO Auto-generated catch block
e.printStackTrace();
}returnlist;
}
}