android实现省市区三级联动 citypicker 亲测可用效果满意

前言

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

	//添加默认的配置,不需要自己定义,当然也可以自定义相关熟悉,详细属性请看demo
	CityConfig 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省市区三级联动效果

android实现省市区三级联动 citypicker 亲测可用效果满意_第1张图片

仿京东省市区三级联动

//创建对象
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();

仿京东省市区三级联动效果

android实现省市区三级联动 citypicker 亲测可用效果满意_第2张图片

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实现省市区三级联动 citypicker 亲测可用效果满意_第3张图片

你可能感兴趣的:(Android,技术,android,三级联动,省市区联动,citypicker)