近期在实现收货地址功能,用到了省市区三级联动效果,网上找到一般都是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. shell中的$(( )) 的用途:主要用在整数的运算$(( a+b*c ))

    $ a=5; b=7; c=2 $ echo $(( a+b*c ))//注意在进行这些运算时必须是双括号 $ echo $(( (a+b)/c )) $ echo $(( (a*b)%c))

  2. 图论:POJ2186-Popular Cows (求强连通分量)

    Popular Cows Description Every cow's dream is to become the most popular cow in the herd. In a herd ...

  3. MySQL常用命令(三)---最值的搜索

    表结构存储数据如下: 需求如下: 1.每项物品的的最高价格是多少?(下面这个查询语句的结果集中你会发现 经销商(dealer)的值不对,第二个语句就是对的)2.对每项物品,找出最贵价格的物品的经销商. ...

  4. 转:Ubuntu下ibus-sunpinyin的安装及翻页快捷键设置!

    在windows下,好多人都已经习惯了使用搜狗拼音,到ubuntu下,忽然没有极为顺手的输入法,实为郁闷,但是确实还没有for linux版本的搜狗使用,这是搜狗的商业策略,我们无法掌控,但是,如果你 ...

  5. opacity--css + javascript兼容性代码

    css设置opacity 之前看了别人写了一段关于opacity的css代码,没深入理解就copy过来自己用了一段时间,现在重新拿出来又深入研究了一下. .cla{ /* IE 8 */ -ms-fi ...

  6. Ubuntu14.04使用root登陆帐户

    http://jingyan.baidu.com/article/27fa73268144f346f8271f83.html 1.输入sudo gedit /usr/share/lightdm/lig ...

  7. Windows 通过 SecureCRT 8.x 上传文件到Linux服务器

    1.SecureCRT 连接 Linux 服务器,这一步操作简单: 2.连接并登录成功后,直接在连接成功的页签上 右键 ->  Connect SFTP Session 打开SFTP窗口: 3. ...

  8. Sequence Models

    Sequence Models This is the fifth and final course of the deep learning specialization at Coursera w ...

  9. 什么是JNI?

    JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C和C++)

  10. CSS选择器与XPath语言

    一 在爬取页面信息的过程中,需要到想要的信息进行定位,主要有两种方法.CSS选择器和XPath语言.查找某一个标签,两种方法都可以做到. 二 CSS选择器 http://www.w3school.co ...