citypicker

Introduction: citypicker 高仿 iOS 滚轮实现 省市区 城市选择三级联动
More: Author   ReportBugs   OfficialWebsite   
Tags:

CityPicker 城市选择器

说明

在实际的项目中一般情况下都需要使用到省市区三级联动地址选择的功能,有的公司是提供接口获取,有的公司则不是,需要自己实现。一开始,我也深受其扰,每次都是要复制一遍,就想能不能打个包出来,供大伙使用。所以自己就封装了一个,不需要自己添加数据源,直接引用即可。这就是 CityPicker 城市选择器的由来!

功能点

  1. 支持仿 iOS 滚轮实现、一级城市列表、三级城市列表
  2. 支持多种自定义属性来满足你的需求
  3. 简单的几行代码即可实现城市选择器功能

数据来源

《中华人民共和国国家统计局-最新县及县以上行政区划代码(截止 2016 年 7 月 31 日)》

CityPicker 城市选择器专属 QQ 群,欢迎加入!

点击此处进入---------> qq 群问答

效果展示

仿 iOS 滚轮实现

城市一级列表展示效果图

省市区三级列表展示效果图

使用方法

gradle 引用

compile 'liji.library.dev:citypickerview:3.1.8'

代码混淆

#地区 3 级联动选择器

-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. 城市一级列表样式使用方法及 demo
  2. 省市区三级列表使用方法及 demo

仿 iOS 滚轮样式使用代码

注意点

一定要提前在 Activity 的 onCreate 里面预先加载本地城市数据,重要的事情说三遍!!!

一定要提前在 Activity 的 onCreate 里面预先加载本地城市数据,重要的事情说三遍!!!

一定要提前在 Activity 的 onCreate 里面预先加载本地城市数据,重要的事情说三遍!!!

3.1.0 以后的版本跟以前版本有点区别,默认加载数据放在需要使用到该选择器的 Activity 中的 onCreate 方法中!!!

3.1.0 以后的版本跟以前版本有点区别,默认加载数据放在需要使用到该选择器的 Activity 中的 onCreate 方法中!!!

3.1.0 以后的版本跟以前版本有点区别,默认加载数据放在需要使用到该选择器的 Activity 中的 onCreate 方法中!!!

举个栗子:

首先需要预加载数据,如我们在 AddNewAddressActivity 中使用到省市区选择器的话,那么我们需要提前解析本地数据,这样在弹出来的时候不会卡顿,因为本地城市数据很多。


public class AddNewAddressActivity extends Activity {

    //申明对象
    CityPickerView mPicker=new CityPickerView();

    @Override
    public void onCreate() {
        super.onCreate();
        /**
         * 预先加载仿 iOS 滚轮实现的全部数据
         */
        mPicker.init(this);

        //其他初始化操作...

    }
}

然后在需要弹出的地方如点击地区选择 button 时弹出它,


//添加默认的配置,不需要自己定义
CityConfig cityConfig = new CityConfig.Builder().build();
mPicker.setConfig(cityConfig);

//监听选择点击事件及返回结果
mPicker.setOnCityItemClickListener(new OnCityItemClickListener() {
            @Override
            public void onSelected(ProvinceBean province, CityBean city, DistrictBean district) {

                //省份
                if (province != null) {

                }

                //城市
                if (city != null) {

                }

                //地区
                if (district != null) {

                }

            }

            @Override
            public void onCancel() {
                ToastUtils.showLongToast(this, "已取消");
            }
        });

        //显示
        mPicker.showCityPicker( );

以上加载是默认属性设置下的选择器,当然我们也可以设置我们自己的样式,详细的属性设置,请看

《详细样式设置属性大全》

返回结果的数据接口

ProvinceBean province, CityBean city, DistrictBean district 都是一样的数据结构。

id  //城市 code
name //城市名称

下个版本要做的

  1. 完成仿京东格式的选择器样式

更新说明

V3.1.8 版本更新内容(2018.06.03)

  1. 发布 3.1.8 版本,修复三级城市列表市返回省出现的崩溃的问题

历史更新说明

赞赏

如果你喜欢 citypicker 这个开源库,感觉 citypicker 帮助到了你,可以点右上角 "Star" 支持一下 谢谢!,你也还可以扫描下面的二维码~ 请作者喝一杯牛奶,让作者更有动力写出更好的开源库服务大家。^_^

赞赏的伙计,请注明你们的昵称,请留下你们的联系方式(最好是 GitHub 地址),谢谢合作 ^_^ 。

赞赏人员列表

赞赏的人

Support Me
Apps
About Me
Google+: Trinea trinea
GitHub: Trinea