近期在实现收货地址功能,用到了省市区三级联动效果,网上找到一般都是xml或json。数据源陈旧改动麻烦。改动了一下使用数据库方式实现了一下

数据源解决。因为数据量比較大通过初始化批量运行SQL的方式不合适,费时不说还easy出错,我採用的是在电脑上创建好数据库然后把数据库文件放到程序里边,通过以下这种方法能够把db文件复制到随意文件夹下。demo中我把文件放在了raw文件夹下

/**
*
* @param inStream
* @param fileNme 文件名称
* @param newPath 要拷贝到的目录路径
*/
public void copyFile(InputStream inStream,String fileNme, String newPath) {
try {
int bytesum = 0;
int byteread = 0; File file = new File(newPath);
//保证目录存在
if (!file.exists()) {
file.mkdir();
}
//假设文件存在覆盖
File newFile=new File(newPath+File.separator+fileNme);
if(newFile.exists()){
newFile.delete();
newFile.createNewFile();
}
FileOutputStream fs = new FileOutputStream(newFile);
byte[] buffer = new byte[1024 * 2];
int length;
while ((byteread = inStream.read(buffer)) != -1) {
bytesum += byteread; //字节数 文件大小
System.out.println(bytesum);
fs.write(buffer, 0, byteread);
}
inStream.close();
fs.close();
} catch (Exception e) {
System.out.println("拷贝文件操作出错");
e.printStackTrace(); }
}

有了数据库文件仅仅须要通过下面方法就能够对该数据库做操作了,该方法返回的是给定数据库的引用

/**
* 打开数据库文件
* @return
*/
public SQLiteDatabase openDataBase(){
SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(
DATABASES_DIR+DATABASE_NAME, null);
return database;
}

接下来就是查询数据源了

/**
*
* @param db
* @return 查询全部的省
*/
public List<ProvinceModel> getProvice(SQLiteDatabase db){
String sql="SELECT * FROM t_address_province ORDER BY id";
Cursor cursor = db.rawQuery(sql,null);
List<ProvinceModel> list=new ArrayList<ProvinceModel>(); if (cursor!=null&&cursor.getCount() > 0) {
while (cursor.moveToNext()){
ProvinceModel provinceModel=new ProvinceModel();
provinceModel.ID=cursor.getString(cursor.getColumnIndex("id"));
provinceModel.NAME=cursor.getString(cursor.getColumnIndex("name"));
provinceModel.CODE = cursor.getString(cursor.getColumnIndex("code"));
list.add(provinceModel);
}
}
return list;
} /**
* 依据省code查询全部的市
* @param db
* @param code
* @return
*/
public List<CityModel> getCityByParentId(SQLiteDatabase db,String code){
String sql="SELECT * FROM t_address_city WHERE provinceCode=? ORDER BY id";
Cursor cursor = db.rawQuery(sql,new String[]{code});
List<CityModel> list=new ArrayList<CityModel>(); if (cursor!=null&&cursor.getCount() > 0) { while (cursor.moveToNext()){
CityModel cityModel=new CityModel();
cityModel.ID=cursor.getString(cursor.getColumnIndex("id"));
cityModel.NAME=cursor.getString(cursor.getColumnIndex("name"));
cityModel.CODE = cursor.getString(cursor.getColumnIndex("code"));
list.add(cityModel);
}
}
return list;
} /**
* 依据市code查询全部的区
* @param db
* @param code
* @return
*/
public List<DistrictModel> getDistrictById(SQLiteDatabase db,String code){
String sql="SELECT * FROM t_address_town WHERE cityCode=? ORDER BY id ";
Cursor cursor = db.rawQuery(sql,new String[]{code});
List<DistrictModel> list=new ArrayList<DistrictModel>();
if (cursor!=null&&cursor.getCount() > 0) {
while (cursor.moveToNext()){
DistrictModel districtModel=new DistrictModel();
districtModel.ID=cursor.getString(cursor.getColumnIndex("id"));
districtModel.NAME=cursor.getString(cursor.getColumnIndex("name"));
districtModel.CODE = cursor.getString(cursor.getColumnIndex("code"));
list.add(districtModel);
}
}
return list;
}
有了数据源工作就完毕了三分之二了,通过继承AbstractWheelTextAdapter实现自己的适配器以省为例
/**
* Created by xuan on 16/1/7.
*/
public class ProvinceAdapter extends AbstractWheelTextAdapter {
public List<ProvinceModel> mList;
private Context mContext;
public ProvinceAdapter(Context context,List<ProvinceModel> list) {
super(context);
mList=list;
mContext=context;
} @Override
protected CharSequence getItemText(int index) {
ProvinceModel provinceModel=mList.get(index);
return provinceModel.NAME;
} @Override
public int getItemsCount() {
return mList.size();
}
}

再将Adapter给WheelView就能够了

附上完整版DemoSQL

WheelView实现省市区三级联动(数据库实现版本号附带完整SQL及数据)的更多相关文章

  1. javaweb--json--ajax--mysql实现省市区三级联动(附三级联动数据库)

    在web中,实现三级联动很常见,尤其是利用jquery+json.但是从根本上来说jquery并不是最能让人容易理解的,接下来从最基本的javascript开始,实现由javascript+json+ ...

  2. ajax省市区三级联动

    jdbc+servlet+ajax开发省市区三级联动 技术点:jdbc操作数据库,ajax提交,字符拦截器,三级联动 特点:局部刷新达到省市区三级联动,举一反三可以做商品分类等 宗旨:从实战中学习 博 ...

  3. 基于ThinkPHP+AJAX的省市区三级联动

    练习,就当练习. 省市区三级联动,样式如下图所示: 1,导入两个js文件并且导入数据库文件. 两个js文件分别是jquery-2.1.4.min.js和jquery-1.js,数据库文件,见附件. 2 ...

  4. jquery省市区三级联动

    jquery省市区三级联动(数据来源国家统计局官网)内附源码下载 很久很久没有写博了. 今天更新了项目的省市区三级联动数据,更新后最新的海南三沙都有,分享给所有需要的小伙伴们... JQUERY + ...

  5. PHPOffice/PHPExcel生成省市区三级联动的excel表格

    最近公司需要用到一个省市区三级联动的excel表格,但是数据都在数据库,又太多,人工不好制作,就让我这个phper来帮忙啦. 主要用到的是excel的定义名称,数据验证.其中数据验证的列表只能是一列或 ...

  6. 基于thinkphp和ajax的省市区三级联动

    练习,就当练习. 省市区三级联动,样式如下图所示: 1,导入两个js文件并且导入数据库文件. 两个js文件分别是jquery-2.1.4.min.js和jquery-1.js,数据库文件,见附件. 2 ...

  7. jquery省市区三级联动(数据来源国家统计局官网)内附源码下载

    很久很久没有写博了. 今天更新了项目的省市区三级联动数据,更新后最新的海南三沙都有,分享给所有需要的小伙伴们... JQUERY + JSON,无数据库,纯JS代码,无加密,无压缩,可直接使用在任何项 ...

  8. 用jsp实现省市区三级联动下拉

    jsp+jquery实现省市区三级联动下拉 不少系统都需要实现省市区三级联动下拉,像人口信息管理.电子商务网站.会员管理等,都需要填写地址相关信息.而用ajax实现的无刷新省市区三级联动下拉则可以改善 ...

  9. 项目一:第九天 1、前台客户登录 2、Jquery citypicker省市区三级联动插件 4、业务受理(在线下单)

    1. 前台客户登录 2. Jquery citypicker省市区三级联动插件 3. 百度地图介绍 4. 业务受理(在线下单) 1 实现前台系统登录功能 1.1 Md5加密 admin(明文)---- ...

随机推荐

  1. Spring核心技术(十一)——基于Java的容器配置(一)

    基本概念: @Bean和@Configuration Spring中新的基于Java的配置的核心就是支持@Configuration注解的类以及@Bean注解的方法. @Bean注解用来表示一个方法会 ...

  2. grunt与seajs结合应用

    9.seajs构建的问题 01.png和02.jpg 10.seajs与grunt如何结合开发.两个插件:grunt-cmd-transport grunt-cmd-contact ,去grunt官网 ...

  3. 3,bool值之间的转换,和str的各个功能属性。

    bool值之间的转换 and 空字符串即为False   字符串内有内容即为True. a = 11 c = str(a) #int转换成str print(type(c)) a = ' b = in ...

  4. 关于面试总结-app测试面试题

    前言 现在面试个测试岗位,都是要求全能的,web.接口.app啥都要会测,那么APP测试一般需要哪些技能呢? 面试app测试岗位会被问到哪些问题,怎样让面试管觉得你对APP测试很精通的样子? 本篇总结 ...

  5. iOS WKWebView

    Webkit 是 iOS 8.0 后提供的新的框架,组件WKWebView比较UIWebView 速度更快.占用内存更少了,可支持性更多 WKWebView可通过KVO监听属性 title.estim ...

  6. numpy split()

    numpy.split(ary, indices_or_sections, axis=0)[source] Split an array into multiple sub-arrays. 将一个ar ...

  7. win10关闭防火墙命令

    NetSh Advfirewall set allprofiles state off #关闭防火墙 Netsh Advfirewall show allprofiles #查看防火墙状态

  8. js对文字进行编码

    js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 1 ...

  9. Terracotta2

    Terracotta 3.2.1简介 (二) Terracotta分布式缓存EhcacheQuartzTerracotta的web session方案  高效.高可用的Web Session解决方案 ...

  10. iOS学习笔记22-推送通知

    一.推送通知 推送通知就是向用户推送一条信息来通知用户某件事件,可以在应用退到后台后,或者关闭后,能够通过推送一条消息通知用户某件事情,比如版本更新等等. 推送通知的常用应用场景: 一些任务管理APP ...