实例介绍
【实例截图】
【核心代码】
package com.example.diqu; import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import android.os.Bundle; import android.app.Activity; import android.content.res.AssetManager; import android.view.LayoutInflater; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; public class MainActivity extends Activity implements OnWheelChangedListener, OnClickListener { protected String[] mProvinceDatas; protected Map<String, String[]> mCitisDatasMap = new HashMap<String, String[]>(); protected Map<String, String[]> mDistrictDatasMap = new HashMap<String, String[]>(); protected Map<String, String> mZipcodeDatasMap = new HashMap<String, String>(); protected String mCurrentProviceName; protected String mCurrentCityName; protected String mCurrentDistrictName =""; protected String mCurrentZipCode =""; // static AddStoreBean mBean; private ProvinceModel sheng; private CityModel shi; private DistrictModel qu; List<ProvinceModel> provinceList = new ArrayList<ProvinceModel>(); private List<CityModel> shi_list; private List<DistrictModel> qu_list; private WheelView mViewProvince; private WheelView mViewCity; private WheelView mViewDistrict; private Button mBtnConfirm; private Button cancelBtn; TextView show_tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); show_tv = (TextView) findViewById(R.id.show_tv); mViewProvince = (com.example.diqu.WheelView) findViewById(R.id.province_wl); mViewCity = (com.example.diqu.WheelView) findViewById(R.id.city_wl); mViewDistrict = (com.example.diqu.WheelView) findViewById(R.id.district_wl); mBtnConfirm = (Button) findViewById(R.id.confirm_btn); cancelBtn = (Button) findViewById(R.id.cancelBtn); mViewProvince.addChangingListener(this); mViewCity.addChangingListener(this); mViewDistrict.addChangingListener(this); mBtnConfirm.setOnClickListener(this); cancelBtn.setOnClickListener(this); setUpData(); } private void setUpData() { // TODO Auto-generated method stub initProvinceDatas(); mViewProvince.setViewAdapter(new ArrayWheelAdapter<String>(MainActivity.this, mProvinceDatas)); mViewProvince.setVisibleItems(7); mViewCity.setVisibleItems(7); mViewDistrict.setVisibleItems(7); updateCities(); updateAreas(); } /** * 根据当前的市,更新区WheelView的信息 */ private void updateAreas() { int pCurrent = mViewCity.getCurrentItem(); mCurrentCityName = mCitisDatasMap.get(mCurrentProviceName)[pCurrent]; shi=shi_list.get(pCurrent); String[] areas = mDistrictDatasMap.get(mCurrentCityName); if (areas == null) { areas = new String[] {""}; } qu=shi.getDistrictList().get(0); qu_list=shi.getDistrictList(); mViewDistrict.setViewAdapter(new ArrayWheelAdapter<String>(this, areas)); mViewDistrict.setCurrentItem(0); } /** * 根据当前的省,更新市WheelView的信息 */ private void updateCities() { int pCurrent = mViewProvince.getCurrentItem(); mCurrentProviceName = mProvinceDatas[pCurrent]; sheng =provinceList.get(pCurrent); String[] cities = mCitisDatasMap.get(mCurrentProviceName); if (cities == null) { cities = new String[] { "" }; } mViewCity.setViewAdapter(new ArrayWheelAdapter<String>(this, cities)); mViewCity.setCurrentItem(0); shi=sheng.getCityList().get(0); shi_list=sheng.getCityList(); updateAreas(); } @Override public void onChanged(WheelView wheel, int oldValue, int newValue) { if (wheel == mViewProvince) { updateCities(); } else if (wheel == mViewCity) { updateAreas(); } else if (wheel == mViewDistrict) { mCurrentDistrictName = mDistrictDatasMap.get(mCurrentCityName)[newValue]; mCurrentZipCode = mZipcodeDatasMap.get(mCurrentDistrictName); qu=qu_list.get(newValue); // Toast.makeText(this, "省:" sheng.getZipcode() "--市:" shi.getZipcode() "--qu:" qu.getZipcode(), 1).show(); } } protected void initProvinceDatas(){ AssetManager asset = getAssets(); try { InputStream input = asset.open("province_data.xml"); // 创建一个解析xml的工厂对象 SAXParserFactory spf = SAXParserFactory.newInstance(); // 解析xml SAXParser parser = spf.newSAXParser(); XmlParserHandler handler = new XmlParserHandler(); parser.parse(input, handler); input.close(); // 获取解析出来的数据 provinceList = handler.getDataList(); //*/ 初始化默认选中的省、市、区 if (provinceList!= null && !provinceList.isEmpty()) { mCurrentProviceName = provinceList.get(0).getName(); List<CityModel> cityList = provinceList.get(0).getCityList(); if (cityList!= null && !cityList.isEmpty()) { mCurrentCityName = cityList.get(0).getName(); List<DistrictModel> districtList = cityList.get(0).getDistrictList(); mCurrentDistrictName = districtList.get(0).getName(); mCurrentZipCode = districtList.get(0).getZipcode(); } } // mProvinceDatas = new String[provinceList.size()]; for (int i=0; i< provinceList.size(); i ) { // 遍历所有省的数据 mProvinceDatas[i] = provinceList.get(i).getName(); List<CityModel> cityList = provinceList.get(i).getCityList(); String[] cityNames = new String[cityList.size()]; for (int j=0; j< cityList.size(); j ) { // 遍历省下面的所有市的数据 cityNames[j] = cityList.get(j).getName(); List<DistrictModel> districtList = cityList.get(j).getDistrictList(); String[] distrinctNameArray = new String[districtList.size()]; DistrictModel[] distrinctArray = new DistrictModel[districtList.size()]; for (int k=0; k<districtList.size(); k ) { // 遍历市下面所有区/县的数据 DistrictModel districtModel = new DistrictModel(districtList.get(k).getName(), districtList.get(k).getZipcode()); // 区/县对于的邮编,保存到mZipcodeDatasMap mZipcodeDatasMap.put(districtList.get(k).getName(), districtList.get(k).getZipcode()); distrinctArray[k] = districtModel; distrinctNameArray[k] = districtModel.getName(); } // 市-区/县的数据,保存到mDistrictDatasMap mDistrictDatasMap.put(cityNames[j], distrinctNameArray); } // 省-市的数据,保存到mCitisDatasMap mCitisDatasMap.put(provinceList.get(i).getName(), cityNames); } if(provinceList.size()>0){ sheng=provinceList.get(0); } if(sheng.getCityList().size()>0){ shi= sheng.getCityList().get(0); shi_list=sheng.getCityList(); } if(shi.getDistrictList().size()>0){ qu=shi.getDistrictList().get(0); qu_list=shi.getDistrictList(); } } catch (Throwable e) { e.printStackTrace(); } finally { } } @Override public void onClick(View arg0) { // TODO Auto-generated method stub switch (arg0.getId()) { case R.id.confirm_btn: show_tv.setText(mCurrentProviceName " " mCurrentCityName " " mCurrentDistrictName); break; case R.id.cancelBtn: break; default: break; } } }
标签: 地址
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论