省市区三级联动选择器怎么选不踩坑:CityPicker 完整上手指南
【免费下载链接】citypickercitypicker城市选择器,详细的省市区地址信息,支持仿iOS滚轮实现,仿京东样式,一级或者三级列表展示方式。项目地址: https://gitcode.com/gh_mirrors/ci/citypicker
做电商收货地址页,你肯定遇到过这个活儿:省市区三级联动,有的公司给接口,有的得自己实现,数据文件还得每份项目复制一遍。Android 端的 CityPicker 城市选择器就是干这个的——省市区数据打包内置,引用即用,还带四种展示样式。
定位:CityPicker 是什么、和别的不一样在哪
一句话:这是个把全国省市区数据直接打包进库里的 Android 地址选择器。
和别的城市选择器不一样的是,它帮你省掉了准备数据这一步——不用找数据文件、不用调接口拉取,全国行政区划 JSON 就放在库的 assets 里(china_city_data.json,约 192KB),引用即可。另外它没有只给你一种 UI,而是把仿 iOS 滚轮、仿京东、一级城市列表、三级城市列表四种样式一次做齐,换风格不用换库。
一条依赖跑通
在build.gradle里配好 jitpack 仓库,然后加一行依赖:
dependencies { implementation 'com.github.crazyandcoder:citypicker:6.0.2' }跑通之后,建议先克隆仓库把app模块的 demo 装起来,把四种样式挨个点开看一遍,再决定自己项目用哪个。
什么场景适合用它
- 电商收货地址:如果你在做下单页的地址填写,直接弹仿京东样式的选择器,用户选完结果通过
OnCityItemClickListener回调给你,省市区三层一次拿全。 - 本地服务筛选:如果你在做一个外卖或到店服务的城市筛选,三级列表样式适合"先省、后市、再区"逐级缩窄的交互,一级列表则适合只关心城市的场景。
- 表单里的地区字段:注册、会员资料这类场景,仿 iOS 滚轮从底部弹出、不占版面,交互也和用户熟悉的系统弹窗一致。
设计上的几个巧思
数据随包、首次解析后缓存——CityParseHelper在init时解析一次数据并缓存,避免每次弹窗都重新加载 192KB 的 JSON,这就是"引用即用"能成立的原因。
自定义数据源走继承而不是改源码——想用自己的层级数据,继承CustomCityData塞进去就行,业务和库代码解耦,升级时不冲突。
样式参数收敛在CityConfig——滚轮显示条数、是否循环滚动、标题与按钮的文案颜色,全在一个配置对象里调。改一行字不用翻布局文件,四种样式共用这套配置思路。
上手前提醒几句
- 版本:V6.0.2 起数据源更新为最新省市区行政数据,并优化了汉字转拼音逻辑——带侧边索引的列表页排序准不准就看这个,升级时可以留意更新说明。
- 数据时效:数据基于 2018 年 12 月县以上行政区划代码,新设区县的变动如果急用,可以走自定义数据源自己补。
- 混淆:库里有不少 Bean 和内部类,开 ProGuard 的项目记得按 README 里的方案配一下 keep 规则,免得上线后解析报错。
下一步做什么
直接克隆仓库跑一下 demo,四种样式加自定义数据源点一遍,手感比读文档快得多。集成中遇到问题,项目有专属 QQ 群(417846442),可以在里面直接问作者。
【免费下载链接】citypickercitypicker城市选择器,详细的省市区地址信息,支持仿iOS滚轮实现,仿京东样式,一级或者三级列表展示方式。项目地址: https://gitcode.com/gh_mirrors/ci/citypicker
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考