近期在实现收货地址功能,用到了省市区三级联动效果,网上找到一般都是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就能够了

附上完整版Demo及SQL

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. centos 装 jdk

    1.源码包准备: 首先到官网下载jdk,http://www.oracle.com/technetwork/java/javase/downloads/jdk7- downloads-1880260. ...

  2. 【20】display,float,position的关系

    [20]display,float,position的关系 如果display为none,元素不显示. 否则,如果position值为absolute或者fixed,元素绝对定位,float的计算值为 ...

  3. 4C. Stars

    4C. Stars Time Limit: 2000ms Case Time Limit: 2000ms Memory Limit: 65536KB   64-bit integer IO forma ...

  4. [automator学习篇]android 接口-- bluetooth

    http://www.android-doc.com/guide/topics/connectivity/bluetooth.html 本地下载的sdk 目录:     D:\AndroidSdk\s ...

  5. ffmpeg常见名词解析

    scan_all_pmts, 扫描全部的ts流的"Program Map Table"表.

  6. .NET重构(一):抽象工厂模式实现登录

    导读:一路艰辛,我也走到了重构.在重构之前,师傅让用经典三层(UI.BLL.DAL)敲了登录.用户的增删改查,共五条线.从开始对三层的朦胧,到五条线结束,终于对三层有了逻辑上清晰的理解.然后就画了几天 ...

  7. nginx的正则

    ~      为区分大小写的匹配. ~*     不区分大小写的匹配(匹配firefox的正则同时匹配FireFox). !~     不匹配的 !~*    不匹配的 .     匹配除换行符以外的 ...

  8. Java类方法 类变量

    类变量就是静态变量,类方法就是静态方法. 在理解类变量.类方法之前先看一段代码: class Person{ int age ; String name; static int totalFee; p ...

  9. BZOJ-1269 文本编辑器

    .... 这道题就是Noi原题嘛...虽然更容易写... 题意: 建立一个数据结构,并支持以下操作: Insert 区间插入有序序列:Delete 区间删除:Rotate 区间翻转:Get 单点查询 ...

  10. 如何解决"The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path"

    今天我在eclipse上搭建新项目时,莫名其妙的出现这个错误,如下: The superclass "javax.servlet.http.HttpServlet" was not ...