在实际的项目中一般情况下都需要使用到省市区三级联动地址选择的功能,有的公司是提供接口获取,有的公司则不是,需要自己实现。一开始,我也深受其扰,每次都是要复制一遍,就想能不能打个包出来,供大伙使用。所以自己就封装了一个,不需要自己添加数据源,直接引用即可。这就是CityPicker城市选择器的由来!
《中华人民共和国国家统计局-最新县及县以上行政区划代码(截止2016年7月31日)》
compile 'liji.library.dev:citypickerview:3.1.0'
#地区3级联动选择器
-keep class com.lljjcoder.**{
*;
}
3.1.0版本跟以前版本有点区别,默认加载数据放在需要使用到该选择器的Activity中的onCreate方法中,这点需要注意,这点需要注意,这点需要注意,重要的事情说三遍!!!
首先需要预加载数据,如我们在AddNewAddressActivity中使用到省市区选择器的话,那么我们需要提前解析本地数据,这样在弹出来的时候不会卡顿,因为本地城市数据很多。
public class AddNewAddressActivity extends Activity {
@Override
public void onCreate() {
super.onCreate();
/**
* 预先加载仿iOS滚轮实现的全部数据
*/
CityPickerView.getInstance().init(this);
//其他初始化操作...
}
}
然后在需要弹出的地方如点击地区选择button时弹出它,
//添加默认的配置,不需要自己定义
CityConfig cityConfig = new CityConfig.Builder().build();
CityPickerView.getInstance().setConfig(cityConfig);
//监听选择点击事件及返回结果
CityPickerView.getInstance().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, "已取消");
}
});
//显示
CityPickerView.getInstance().showCityPicker( );
以上加载是默认属性设置下的选择器,当然我们也可以设置我们自己的样式,详细的属性设置,请看
ProvinceBean province, CityBean city, DistrictBean district都是一样的数据结构。
id //城市code
name //城市名称
- 新增部分样式属性
- 更新城市数据,使用国家统计局数据,准确完整同时提供城市id
- 修复#94、#96问题
- 其他细节调整优化。
如果你喜欢 citypicker 的设计,感觉 citypicker 帮助到了你,可以点右上角 "Star" 支持一下 谢谢!,你也还可以扫描下面的二维码~ 请作者喝一杯牛奶,让作者更有动力写出更好的开源库服务大家。^_^
赞赏的伙计,请留下你们的联系方式(最好是GitHub地址),我好扶你们上墙。