Android 省市区三级联动城市选择器 CityPicker 完整集成指南
【免费下载链接】citypickercitypicker城市选择器,详细的省市区地址信息,支持仿iOS滚轮实现,仿京东样式,一级或者三级列表展示方式。项目地址: https://gitcode.com/gh_mirrors/ci/citypicker
每个 App 几乎都要做收货地址,省市区三级联动地址选择往往是复制粘贴来的,数据源还要自己维护。开源组件 CityPicker 省市区城市选择器把这个环节做成了开箱即用的方案。
这个组件解决什么问题
省市区选择通常要自己管行政数据、自己画滚轮和列表,费时且容易出错。CityPicker 由开发者 crazyandcoder 封装,内置最新省市区行政数据,直接引入即可弹出选择器;最大卖点是四种样式一套库搞定——仿iOS滚轮、仿京东样式、一级城市列表、三级城市列表,还允许你换成自己的数据源。
技术实现与核心能力
- 纯 Java 实现,基于 Gradle 多模块工程:
citypickerview是核心选择器库,app是可运行的样式演示,lib_citydata是配套的数据解析工具。 - 省市区数据内置在 assets 的
china_city_data.json中,随库打包,不依赖网络接口,离线可用。 - 滚轮(WheelView)为组件内自绘控件,不额外引入第三方 UI 依赖,体积轻、方便混淆。
- 列表样式内置汉字转拼音逻辑,按首字母排序、侧边栏快速跳字,精度经过优化。
CityPicker 支持哪些选择样式
- 仿iOS滚轮:底部弹出三列滚轮,可配标题、循环滚动、可见行数、默认选中省市。
- 仿京东样式:左栏省份列表 + 右栏城市列表,两级页面切换。
- 一级城市列表:只显示省级列表,适合只选到大区/省份的场景。
- 三级城市列表:省→市→区逐页跳转,每页带字母索引。
- 四种样式共用回调接口,返回的省市区对象带名称和行政区划 ID,可直接入库。
如何引入 CityPicker
第一步,在 Project 的build.gradle中添加 jitpack 仓库:
allprojects { repositories { maven { url 'https://jitpack.io' } } }第二步,在 app 的build.gradle中添加依赖:
implementation 'com.github.crazyandcoder:citypicker:6.0.2'CityPicker 使用示例代码
以仿iOS滚轮为例,配置、监听、显示三步完成:
CityConfig config = new CityConfig.Builder() .title("选择城市") .province("江苏").city("常州").district("新北区") .build(); CityPickerView view = new CityPickerView(); view.setConfig(config); view.setOnCityItemClickListener(new OnCityItemClickListener() { @Override public void onSelected(ProvinceBean p, CityBean c, DistrictBean d) { // 拿到省市区名称与行政区划ID } }); view.showCityPicker();字体大小、颜色、标题背景、自定义 item 布局等均可通过 Builder 链式配置,不用改源码。
适用场景:哪里需要省市区选择
- 电商订单页:用户填写收货地址时选省市区。
- 本地生活服务:外卖、家政、同城配送按区域过滤和定价。
- 社交与简历类应用:个人资料中填写城市所在地。
- 保险与物流下单:按用户地址计算费率或运费。
- 数据统计:采集用户地域分布,用于运营分析。
数据更新、文档与社区支持
组件会随版本更新行政数据(6.0.2 已使用最新省市区数据并优化汉字转拼音逻辑),并支持港澳台数据开关。官方 wiki 提供每种样式的接入教程和代码混淆方案,app模块本身就是完整示例工程。项目基于 Apache 2.0 协议开源,作者维护专属 QQ 群(417846442)答疑。
省市区选择这块,交给 CityPicker 就好。
【免费下载链接】citypickercitypicker城市选择器,详细的省市区地址信息,支持仿iOS滚轮实现,仿京东样式,一级或者三级列表展示方式。项目地址: https://gitcode.com/gh_mirrors/ci/citypicker
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考