前言

项目新增新功能地区筛选 要实现省市区三级联动
一直以为很简单结果在使用第三方组件的时候出现了问题
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.**{*;}

总结

多加技术群还是有好处 遇到不懂的问题 在群里发表一下 还是有好人帮忙的
虽然绝大部分都不会伸手帮忙 :(
如果别人帮你解决了问题 记得请别人喝一瓶水 了表敬意!

共勉

我要一步一步往上爬
在最高点乘着叶片往前飞
任风吹干流过的泪和汗
我要一步一步往上爬
等待阳光静静看着它的脸
小小的天有大大的梦想
我有属于我的天
任风吹干流过的泪和汗
总有一天我有属于我的天

更多相关文章

  1. android仿iPhone滚轮控件实现及源码分析(一)
  2. Android根据经纬度获取城市名的方法
  3. 滚动选择packview风格的三级城市底部弹出菜单
  4. Android高德获取逆地址编码(经纬度坐标-地址描述如省市区街道)
  5. 最新Android简单实现省市区三级联动
  6. Android(安卓)获取Google Weather API 并通过Xml和JSON解析数据
  7. Android城市联动,城市列表展示
  8. Android(安卓)选择城市,选择联系人,自定义内容等需要索引的功能
  9. Android之向中国天气网发送GET请求获取JSON数据实例

随机推荐

  1. Android启动脚本init.rc
  2. 如果让我重新设计一款Android(安卓)App
  3. React Native 调用原生Android/iOS代码实
  4. Android(安卓)Animation学习
  5. Android(安卓)WebView 用法
  6. Android(安卓)TextView属性详解
  7. Android—TextView的XML属性和方法
  8. 浅谈android的selector,背景选择器
  9. Android(安卓)开发中使用 SQLite 数据库
  10. Android(安卓)Camera的接口与架构介绍