实现二级列表双listview省市选择

前端之家收集整理的这篇文章主要介绍了实现二级列表双listview省市选择前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

实现的效果图如下

其中 难点在于 xml 的解析,以及两个listview 的交互


解析xml

  1. public class XmlParserHandler extends DefaultHandler {
  2. /** * 存储所有的解析对象 */
  3. private List<ProvinceModel> provinceList = new ArrayList<ProvinceModel>();
  4. public XmlParserHandler() { }
  5. public List<ProvinceModel> getDataList() { return provinceList; }
  6. @Override
  7. public void startDocument() throws SAXException { // 当读到第一个开始标签的时候,会触发这个方法 }
  8. ProvinceModel provinceModel = new ProvinceModel();
  9. CityModel cityModel = new CityModel();
  10. @Override
  11. public void startElement(String uri,String localName,String qName,Attributes attributes) throws SAXException
  12. { // 当遇到开始标记的时候,调用这个方法
  13. if (qName.equals("province")) {
  14. provinceModel = new ProvinceModel();
  15. provinceModel.setName(attributes.getValue(0));
  16. provinceModel.setCityList(new ArrayList<CityModel>());
  17. }
  18. else if (qName.equals("city")) {
  19. cityModel = new CityModel();
  20. cityModel.setName(attributes.getValue(0)); } }
  21. @Override
  22. public void endElement(String uri,String qName) throws SAXException {
  23. // 遇到结束标记的时候,会调用这个方法
  24. if (qName.equals("city")) {
  25. provinceModel.getCityList().add(cityModel);
  26. } else if (qName.equals("province")) {
  27. provinceList.add(provinceModel); } }
  28. @Override
  29. public void characters(char[] ch,int start,int length) throws SAXException { }
  30. }

两个listView 数据交互

{CSDN:CODE:
mainlist.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent,View view,
int position,long id) {
selectSE=position;
initAdapter(mCitisDatasMap.get(mProvinceDatas[position]));
mainAdapter.setSelectItem(position);
mainAdapter.notifyDataSetChanged();
}
});


morelist.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent,long id) {
//Toast.makeText(context.getActivity(),mProvinceDatas[selectSE]+mCitisDatasMap.get(mProvinceDatas[selectSE])[position],0).show();

moreAdapter.setSelectItem(position);
moreAdapter.notifyDataSetChanged();
context.setCityName(mCitisDatasMap.get(mProvinceDatas[selectSE])[position]);
SelectCity.this.dismiss();
}
});

}

源代码下载地址

猜你在找的XML相关文章