android 省市区选择器

demo1链接:https://download.csdn.net/download/meixi_android/10819638

效果1——跳页全屏式地区选择器:

demo2链接:https://download.csdn.net/download/meixi_android/10823744

样式2——dialog市区选择器:

实现方法:

1、添加依赖

compile 'cn.qqtheme.framework:WheelPicker:1.4.3'
compile 'com.alibaba:fastjson:1.1.54.android'

2、自定义底部地区选择器dialog

/*** 作者:created by meixi* 邮箱:13164716840@163.com* 日期:2018/12/3 08*/public class BecomePicktask extends AsyncTask<String, Void, ArrayList<Province>> {private WeakReference<Activity> weakReference;private ProgressDialog dialog;private Callback callback;private String selectedProvince = "", selectedCity = "", selectedCounty = "";private boolean hideProvince = false;private boolean hideCounty = false;//隐藏区truepublic BecomePicktask(Activity activity) {weakReference = new WeakReference<>(activity);}public void setHideProvince(boolean hideProvince) {this.hideProvince = hideProvince;}public void setHideCounty(boolean hideCounty) {this.hideCounty = hideCounty;}public void setCallback(Callback callback) {this.callback = callback;}@Overrideprotected void onPreExecute() {Activity activity = weakReference.get();if (activity != null) {dialog = ProgressDialog.show(activity, null, "正在初始化数据...", true, true);}}@Overrideprotected ArrayList<Province> doInBackground(String... params) {if (params != null) {switch (params.length) {case 1:selectedProvince = params[0];break;case 2:selectedProvince = params[0];selectedCity = params[1];break;case 3:selectedProvince = params[0];selectedCity = params[1];selectedCounty = params[2];//隐藏区break;default:break;}}ArrayList<Province> data = new ArrayList<>();try {Activity activity = weakReference.get();if (activity != null) {String json = ConvertUtils.toString(activity.getAssets().open("city.json"));data.addAll(FastJsonUtils.getObjectsList(json, Province.class));}} catch (Exception e) {e.printStackTrace();}return data;}@Overrideprotected void onPostExecute(ArrayList<Province> result) {dialog.dismiss();if (result.size() > 0) {Activity activity = weakReference.get();if (activity != null) {AddressPicker picker = new AddressPicker(activity, result);picker.setHideProvince(hideProvince);picker.setHideCounty(hideCounty);if (hideCounty) {picker.setColumnWeight(1 / 3.0, 2 / 3.0);//将屏幕分为3份,省级和地级的比例为1:2picker.setSelectedItem(selectedProvince, selectedCity);} else {picker.setColumnWeight(2 / 8.0, 3 / 8.0, 3 / 8.0);//省级、地级和县级的比例为2:3:3picker.setSelectedItem(selectedProvince, selectedCity, selectedCounty);}
//                picker.setSelectedItem(selectedProvince, selectedCity, selectedCounty);//隐藏区picker.setOnAddressPickListener(callback);picker.show();}} else {callback.onAddressInitFailed();}}public interface Callback extends AddressPicker.OnAddressPickListener {void onAddressInitFailed();}}

添加 city.json 到asset

 


city.json数据结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/415953.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mac 下载的破解软件显示 文件已损坏

其实&#xff0c;这是mac系统加强了安全机制&#xff0c;默认不允许用户自行下载安装应用程序&#xff0c;只能从Mac App Store里安装应用。 1、执行下面命令 sudo spctl --master-disable2、打开系统偏好设置 安全性与隐私&#xff0c;若显示任何来源&#xff0c;大功告成

vscode 遇到的迷之bug nvm is not compatible with the npm config prefix

mac升级系统后&#xff0c;发现每次打开vscode&#xff0c;在命令栏TERMINAL中都会出现不识别npm&#xff0c;把vscode重新安装后&#xff0c;还是不行。 最后&#xff0c;在万能的git上找到了解决方法&#xff0c;之前出错的原因使因为我曾经使用brew install node安装过nod…

bsgs(Baby Steps Giant Steps)算法

BSGS算法&#xff08;Baby Steps Giant Steps算法&#xff0c;大步小步算法&#xff0c;北上广深算法&#xff0c;拔山盖世算法&#xff09; 适用问题 对于式子&#xff1a; $$x^yz(mod_p)$$ 已知x&#xff0c;z&#xff0c;p&#xff0c;p为质数&#xff1b; 求解一个最小非负…

Head First设计模式之备忘录模式

一、定义 不破坏封装性的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态 二、结构 备忘录模式中主要有三类角色&#xff1a; 发起人角色&#xff1a;记录当前时刻的内部状态&#xff0c;负责创建和…

mpvue 从零开始 女友初成长 0

我的女友叫mpvue&#xff0c;为什么不选择原生的&#xff0c;或者wepy呢&#xff0c;因为我只喜欢mpvue。 0、首先你得保证先安装了vue-cli npm install --g vue-cli1、脚手架构建项目&#xff0c;我直接在当前项目中创建&#xff0c;一路Y就可以创建项目了。 vue init mpvu…

Android 隐藏状态栏,沉浸式状态栏,状态栏背景色,状态栏字体色,透明状态工具类

设置状态栏颜色 if (Build.VERSION.SDK_INT>21){getWindow().setStatusBarColor(getResources().getColor(R.color.mainc)); } 方法2 <color name"colorPrimary">#3F51B5</color> //取消标题 requestWindowFeature(Window.FEATURE_NO_TITLE); /…

SVN错误信息汇总

Subversion 错误信息一览表 注意&#xff1a; 不同的客户端&#xff08;命令行&#xff0c;TortoiseSVN, AnkhSVN, Subclipse等&#xff09;的出错信息可能稍有不同。 下面表格中的出错信息以 http://svn.moon.ossxp.com/svn/test 版本库做示例&#xff0c;仅供参考。 编…

mpvue 从零开始 女友的衣装 1 pages

pages文件夹就像一个大橱柜&#xff0c;里面放着各种精美的衣装&#xff0c;你也可以理解为供小程序的页面。 1、制造衣服 我在pages页面下新建了3个页面 market 广告市场task 任务中心my 个人中心 以market为例&#xff0c;写最简单的代码 <template><div class…

Oracle RDA(Remote Diagnostic Agent) 工具说明

Oracle RDA(Remote Diagnostic Agent) 工具说明 分类&#xff1a; Oracle 性能调优 Oracle 高级知识 一.RDA 说明 RDA(RemoteDiagnostic Agent)是oracle用来收集、分析数据库的工具&#xff0c;运行该工具不会改变系统的任何参数&#xff0c;RDA收集的相关数据非常全面&…

mpvue 从零开始 女友的发带 2 window中设置

女友头上发带的颜色和文字是可以设置的&#xff0c;通过配置app.json中的window参数。 "window": {"backgroundTextStyle": "light","navigationBarBackgroundColor": "#58A94E","navigationBarTitleText": "…

mysql中独立表空间与共享表空间之前如何切换

环境 mysql版本&#xff1a;5.7.19 官方文档&#xff1a;(https://dev.mysql.com/doc/refman/5.7/en/innodb-multiple-tablespaces.html) 查看目前属于哪种表空间 mysql> show variables like %per_%; 共享表空间会显示为off&#xff1a; 独立表空间会显示为on&#xff1a; …