Android省市区三级联动滚轮选择——Cascade_Master

http://download.csdn.net/detail/wulianghuan/8205211
spProvince = (Spinner)findViewById(R.id.spAddMettingAddressProvince); spCity = (Spinner)findViewById(R.id.spAddMettingAddressCity); ArrayAdapter<CharSequence> aAdapter = ArrayAdapter.createFromResource(this, R.array.province, android.R.layout.simple_spinner_item); aAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spProvince.setAdapter(aAdapter); spProvince.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { Spinner spinner = (Spinner)parent; String pro = (String)spinner.getItemAtPosition(position); ArrayAdapter<CharSequence> cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.city_default, android.R.layout.simple_spinner_item); //new ArrayAdapter<CharSequence> // (MainActivity.this,android.R.layout.simple_spinner_item, cities); //获取所在省含有哪些市(从资源数组文件中获取数据) if(pro.equals("河北省")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.hebei, android.R.layout.simple_spinner_item); }else if(pro.equals("北京市")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.bj, android.R.layout.simple_spinner_item); }else if(pro.equals("山西省")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.shan1xi, android.R.layout.simple_spinner_item); }else if(pro.equals("天津市")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.tianjing, android.R.layout.simple_spinner_item); }else if(pro.equals("内蒙古")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.neimeng, android.R.layout.simple_spinner_item); }else if(pro.equals("辽宁省")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.liaoning, android.R.layout.simple_spinner_item); }else if(pro.equals("吉林省")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.jilin, android.R.layout.simple_spinner_item); }else if(pro.equals("黑龙江省")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.heilongjjiang, android.R.layout.simple_spinner_item); }else if(pro.equals("上海市")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.shanghai, android.R.layout.simple_spinner_item); }else if(pro.equals("江苏省")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.jiangsu, android.R.layout.simple_spinner_item); }else if(pro.equals("浙江省")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.zhejiang, android.R.layout.simple_spinner_item); }else if(pro.equals("安徽省")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.anhui, android.R.layout.simple_spinner_item); }else if(pro.equals("福建省")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.fujian, android.R.layout.simple_spinner_item); }else if(pro.equals("江西省")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.jiangxi, android.R.layout.simple_spinner_item); }else if(pro.equals("山东省")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.shandong, android.R.layout.simple_spinner_item); }else if(pro.equals("河南省")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.henan, android.R.layout.simple_spinner_item); }else if(pro.equals("湖北省")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.hubei, android.R.layout.simple_spinner_item); }else if(pro.equals("湖南省")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.hunan, android.R.layout.simple_spinner_item); }else if(pro.equals("广东省")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.guangdong, android.R.layout.simple_spinner_item); }else if(pro.equals("广西自治区")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.guangxi, android.R.layout.simple_spinner_item); }else if(pro.equals("海南省")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.hainan, android.R.layout.simple_spinner_item); }else if(pro.equals("重庆市")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.chongqing, android.R.layout.simple_spinner_item); }else if(pro.equals("四川省")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.sichuan, android.R.layout.simple_spinner_item); }else if(pro.equals("贵州省")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.guzhou, android.R.layout.simple_spinner_item); }else if(pro.equals("云南省")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.yunan, android.R.layout.simple_spinner_item); }else if(pro.equals("西藏自治区")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.xizang, android.R.layout.simple_spinner_item); }else if(pro.equals("陕西省")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.shan3xi, android.R.layout.simple_spinner_item); }else if(pro.equals("甘肃省")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.gansu, android.R.layout.simple_spinner_item); }else if(pro.equals("青海省")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.qinghai, android.R.layout.simple_spinner_item); }else if(pro.equals("宁夏回族自治区")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.ningxia, android.R.layout.simple_spinner_item); }else if(pro.equals("新疆维吾尔自治区")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.xinjiang, android.R.layout.simple_spinner_item); }else if(pro.equals("香港特别行政区")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.xianggang, android.R.layout.simple_spinner_item); }else if(pro.equals("澳门特别行政区")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.aomen, android.R.layout.simple_spinner_item); }else if(pro.equals("台湾省")){ cityAdapter = ArrayAdapter.createFromResource (MettingAddActivity.this, R.array.taiwan, android.R.layout.simple_spinner_item); } cityAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //绑定数据到Spinner(City)上 spCity.setAdapter(cityAdapter); } @Override public void onNothingSelected(AdapterView<?> parent) { } });
实现JavaWeb数据库动态加载全国省市区三级联动可以按照以下步骤进行: 1. 创建数据库表 首先需要创建数据库表,包括省、市、区/县三个表,每个表都应该有一个唯一的ID、名称和父ID,用于建立三个表之间的关联关系。 2. 编写JavaBean 然后需要编写对应的JavaBean,用于存储从数据库中查询到的省、市、区/县信息。 3. 编写DAO层 接着需要编写对应的DAO层,用于查询数据库中的省、市、区/县信息。 4. 编写Servlet 然后需要编写一个Servlet,用于接收前端页面传来的请求,调用DAO层查询数据库中的数据,并将结果返回给前端页面。 5. 编写前端页面 最后需要编写前端页面,用于展示省、市、区/县三级联动的下拉框,并通过Ajax调用Servlet获取数据库中的数据。 具体实现细节可以参考以下代码: 1. 数据库表结构 省表: CREATE TABLE `province` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 市表: CREATE TABLE `city` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `province_id` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `fk_province_id` (`province_id`), CONSTRAINT `fk_province_id` FOREIGN KEY (`province_id`) REFERENCES `province` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 区/县表: CREATE TABLE `district` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `city_id` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `fk_city_id` (`city_id`), CONSTRAINT `fk_city_id` FOREIGN KEY (`city_id`) REFERENCES `city` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 2. JavaBean 省JavaBean: public class Province { private int id; private String name; //省略getter和setter方法 } 市JavaBean: public class City { private int id; private String name; private int provinceId; //省略getter和setter方法 } 区/县JavaBean: public class District { private int id; private String name; private int cityId; //省略getter和setter方法 } 3. DAO层 省DAO: public class ProvinceDao { public List<Province> getAllProvinces() throws SQLException { List<Province> provinces = new ArrayList<>(); Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try { conn = DBUtil.getConnection(); String sql = "SELECT * FROM province"; stmt = conn.prepareStatement(sql); rs = stmt.executeQuery(); while (rs.next()) { Province province = new Province(); province.setId(rs.getInt("id")); province.setName(rs.getString("name")); provinces.add(province); } } finally { DBUtil.close(conn, stmt, rs); } return provinces; } } 市DAO: public class CityDao { public List<City> getCitiesByProvinceId(int provinceId) throws SQLException { List<City> cities = new ArrayList<>(); Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try { conn = DBUtil.getConnection(); String sql = "SELECT * FROM city WHERE province_id=?"; stmt = conn.prepareStatement(sql); stmt.setInt(1, provinceId); rs = stmt.executeQuery(); while (rs.next()) { City city = new City(); city.setId(rs.getInt("id")); city.setName(rs.getString("name")); city.setProvinceId(provinceId); cities.add(city); } } finally { DBUtil.close(conn, stmt, rs); } return cities; } } 区/县DAO: public class DistrictDao { public List<District> getDistrictsByCityId(int cityId) throws SQLException { List<District> districts = new ArrayList<>(); Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try { conn = DBUtil.getConnection(); String sql = "SELECT * FROM district WHERE city_id=?"; stmt = conn.prepareStatement(sql); stmt.setInt(1, cityId); rs = stmt.executeQuery(); while (rs.next()) { District district = new District(); district.setId(rs.getInt("id")); district.setName(rs.getString("name")); district.setCityId(cityId); districts.add(district); } } finally { DBUtil.close(conn, stmt, rs); } return districts; } } 4. Servlet 省Servlet: public class ProvinceServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { ProvinceDao provinceDao = new ProvinceDao(); List<Province> provinces = provinceDao.getAllProvinces(); String json = new Gson().toJson(provinces); response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); response.getWriter().write(json); } catch (SQLException e) { e.printStackTrace(); } } } 市Servlet: public class CityServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int provinceId = Integer.parseInt(request.getParameter("provinceId")); try { CityDao cityDao = new CityDao(); List<City> cities = cityDao.getCitiesByProvinceId(provinceId); String json = new Gson().toJson(cities); response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); response.getWriter().write(json); } catch (SQLException e) { e.printStackTrace(); } } } 区/县Servlet: public class DistrictServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int cityId = Integer.parseInt(request.getParameter("cityId")); try { DistrictDao districtDao = new DistrictDao(); List<District> districts = districtDao.getDistrictsByCityId(cityId); String json = new Gson().toJson(districts); response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); response.getWriter().write(json); } catch (SQLException e) { e.printStackTrace(); } } } 5. 前端页面 省市区三级联动下拉框: ``` 省:<select id="province"> <option value="">请选择省份</option> </select> 市:<select id="city"> <option value="">请选择城市</option> </select> 区/县:<select id="district"> <option value="">请选择区/县</option> </select> ``` Ajax调用: ``` <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script> <script> $(document).ready(function() { $.ajax({ type: "GET", url: "ProvinceServlet", success: function(data) { var options = ''; for (var i = 0; i < data.length; i++) { options += '<option value="' + data[i].id + '">' + data[i].name + '</option>'; } $('#province').append(options); }, error: function() { alert('获取省份列表失败!'); } }); $('#province').change(function() { var provinceId = $(this).val(); $('#city').empty().append('<option value="">请选择城市</option>'); $('#district').empty().append('<option value="">请选择区/县</option>'); if (provinceId != '') { $.ajax({ type: "GET", url: "CityServlet", data: { provinceId: provinceId }, success: function(data) { var options = ''; for (var i = 0; i < data.length; i++) { options += '<option value="' + data[i].id + '">' + data[i].name + '</option>'; } $('#city').append(options); }, error: function() { alert('获取城市列表失败!'); } }); } }); $('#city').change(function() { var cityId = $(this).val(); $('#district').empty().append('<option value="">请选择区/县</option>'); if (cityId != '') { $.ajax({ type: "GET", url: "DistrictServlet", data: { cityId: cityId }, success: function(data) { var options = ''; for (var i = 0; i < data.length; i++) { options += '<option value="' + data[i].id + '">' + data[i].name + '</option>'; } $('#district').append(options); }, error: function() { alert('获取区/县列表失败!'); } }); } }); }); </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值