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

实现的效果图如下

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


解析xml

public class XmlParserHandler extends DefaultHandler {
    /**     * 存储所有的解析对象     */    
private List<ProvinceModel> provinceList = new ArrayList<ProvinceModel>();               
public XmlParserHandler() {            }
    public List<ProvinceModel> getDataList() {        return provinceList;    }
    @Override   
 public void startDocument() throws SAXException {        // 当读到第一个开始标签的时候,会触发这个方法    }
    ProvinceModel provinceModel = new ProvinceModel();   
 CityModel cityModel = new CityModel();
        @Override   
 public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException 
{        // 当遇到开始标记的时候,调用这个方法      
  if (qName.equals("province")) {           
   provinceModel = new ProvinceModel();         
   provinceModel.setName(attributes.getValue(0));         
   provinceModel.setCityList(new ArrayList<CityModel>());  
      } 
   else if (qName.equals("city")) {           
    cityModel = new CityModel();            
   cityModel.setName(attributes.getValue(0));                }     }
    @Override   
 public void endElement(String uri, String localName, String qName)            throws SAXException {      
  // 遇到结束标记的时候,会调用这个方法             
 if (qName.equals("city")) {            
      provinceModel.getCityList().add(cityModel);        
} else if (qName.equals("province")) {          
  provinceList.add(provinceModel);        }    }       
 @Override    
public void characters(char[] ch, int start, int length)            throws SAXException {    }
}
 
 

两个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, View view,
                    int position, 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();
            }
        });

}

源代码下载地址



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值