android实现省市区三级联动 citypicker 亲测可用效果满意
16lz
2021-01-25
前言
项目新增新功能地区筛选 要实现省市区三级联动
一直以为很简单结果在使用第三方组件的时候出现了问题
Github上stars数最多的那个Android-PickerView
一直出现问题
不是报空指针就是数组越界一个小问题卡了一下午 加技术群都满了 问题区也没有找到满意的答案
一度怀疑这个Android-PickerView这个星星是不是刷上去的
最后无奈还是换了别的第三方
在Github上找到了这个citypicker
亲测很好用 流程也非常简单 !
CityPicker 城市选择器
功能点
- 支持仿iOS滚轮实现、仿京东样式、一级城市列表、三级城市列表
- 支持多种自定义属性来满足你的需求
- 简单的几行代码即可实现城市选择器功能
- 支持使用自己的数据来实现城市选择器
第一步gradle引用
implementation 'liji.library.dev:citypickerview:5.2.2'
CityPicker代码实现
CityPicker基本属性配置
CityConfig cityConfig = new CityConfig.Builder() .title("选择城市")//标题 .titleTextSize(18)//标题文字大小 .titleTextColor("#585858")//标题文字颜 色 .titleBackgroundColor("#E9E9E9")//标题栏背景色 .confirTextColor("#585858")//确认按钮文字颜色 .confirmText("ok")//确认按钮文字 .confirmTextSize(16)//确认按钮文字大小 .cancelTextColor("#585858")//取消按钮文字颜色 .cancelText("cancel")//取消按钮文字 .cancelTextSize(16)//取消按钮文字大小 //显示类,只显示省份一级,显示省市两级还是显示省市区三级 .setCityWheelType(CityConfig.WheelType.PRO_CITY_DIS) .showBackground(true)//是否显示半透明背景 .visibleItemsCount(7)//显示item的数量 .province("浙江省")//默认显示的省份 .city("杭州市")//默认显示省份下面的城市 .district("滨江区")//默认显示省市下面的区县数据 .provinceCyclic(true)//省份滚轮是否可以循环滚动 .cityCyclic(true)//城市滚轮是否可以循环滚动 .districtCyclic(true)//区县滚轮是否循环滚动 .setCustomItemLayout(R.layout.item_city)//自定义item的布局 //自定义item布局里面的textViewid .setCustomItemTextViewId(R.id.item_city_name_tv) .drawShadows(false)//滚轮不显示模糊效果 .setLineColor("#03a9f4")//中间横线的颜色 .setLineHeigh(5)//中间横线的高度 .setShowGAT(true)//是否显示港澳台数据,默认不显示 .build();//设置自定义的属性配置CityPickerView.getInstance().setConfig(cityConfig);
仿IOS省市区三级联动
//申明对象 注意这个对象和仿京东不是同一个对象CityPickerView mPicker=new CityPickerView(); @Override public void onCreate() { super.onCreate(); //预先加载仿iOS滚轮实现的全部数据 mPicker.init(this); }//添加默认的配置,不需要自己定义,当然也可以自定义相关熟悉,详细属性请看demoCityConfig cityConfig = new CityConfig.Builder().build();mPicker.setConfig(cityConfig);//监听选择点击事件及返回结果mPicker.setOnCityItemClickListener(new OnCityItemClickListener() { @Override public void onSelected(ProvinceBean province, CityBean city, DistrictBean district) { //省份province //城市city //地区district } @Override public void onCancel() { ToastUtils.showLongToast(this, "已取消"); } });//显示 mPicker.showCityPicker( );
仿IOS省市区三级联动效果
仿京东省市区三级联动
//创建对象JDCityPicker cityPicker = new JDCityPicker();//初始化配置JDCityConfig jdCityConfig = new JDCityConfig.Builder().build();//设置显示的样式 jdCityConfig.setShowType(JDCityConfig.ShowType.PRO_CITY_DIS); cityPicker.init(this);//初始化选择器 cityPicker.setConfig(jdCityConfig); cityPicker.setOnCityItemClickListener(new OnCityItemClickListener() { @Override public void onSelected(ProvinceBean province, CityBean city, DistrictBean district) {//选中后的监听 resultV.setText("城市选择结果:\n" + province.getName() + "(" + province.getId() + ")\n" + city.getName() + "(" + city.getId() + ")\n" + district.getName() + "(" + district.getId() + ")"); } @Override public void onCancel() { //cancel监听 } }); //显示地区列表cityPicker.showCityPicker();
仿京东省市区三级联动效果
cityPicker 代码混淆
如果混淆开启了还是报错 请把混淆关闭了再打开试试 开始用的时候我遇到了这个问题
后面加群解决了 群号是:417846442
-keep class com.lljjcoder.**{*;}-dontwarn demo.**-keep class demo.**{*;}-dontwarn net.sourceforge.pinyin4j.**-keep class net.sourceforge.pinyin4j.**{*;}-keep class net.sourceforge.pinyin4j.format.**{*;}-keep class net.sourceforge.pinyin4j.format.exception.**{*;}
总结
多加技术群还是有好处 遇到不懂的问题 在群里发表一下 还是有好人帮忙的
虽然绝大部分都不会伸手帮忙 :(
如果别人帮你解决了问题 记得请别人喝一瓶水 了表敬意!
共勉
我要一步一步往上爬
在最高点乘着叶片往前飞
任风吹干流过的泪和汗
我要一步一步往上爬
等待阳光静静看着它的脸
小小的天有大大的梦想
我有属于我的天
任风吹干流过的泪和汗
总有一天我有属于我的天
更多相关文章
- android仿iPhone滚轮控件实现及源码分析(一)
- Android根据经纬度获取城市名的方法
- 滚动选择packview风格的三级城市底部弹出菜单
- Android高德获取逆地址编码(经纬度坐标-地址描述如省市区街道)
- 最新Android简单实现省市区三级联动
- Android(安卓)获取Google Weather API 并通过Xml和JSON解析数据
- Android城市联动,城市列表展示
- Android(安卓)选择城市,选择联系人,自定义内容等需要索引的功能
- Android之向中国天气网发送GET请求获取JSON数据实例