基本信息
源码名称:android 地区选择(省市县)
源码大小:0.75M
文件格式:.zip
开发语言:Java
更新时间:2016-12-13
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
数据文件在 assets/province_data.xml 下
数据文件在 assets/province_data.xml 下
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; } } }