WheelView实现省市区三级联动(数据库实现版本号附带完整SQL及数据)
2017-07-18 20:00
756 查看
近期在实现收货地址功能,用到了省市区三级联动效果,网上找到一般都是xml或json。数据源陈旧改动麻烦。改动了一下使用数据库方式实现了一下
数据源解决。因为数据量比較大通过初始化批量运行SQL的方式不合适,费时不说还easy出错,我採用的是在电脑上创建好数据库然后把数据库文件放到程序里边,通过以下这种方法能够把db文件复制到随意文件夹下。demo中我把文件放在了raw文件夹下
有了数据库文件仅仅须要通过下面方法就能够对该数据库做操作了,该方法返回的是给定数据库的引用
接下来就是查询数据源了
有了数据源工作就完毕了三分之二了,通过继承AbstractWheelTextAdapter实现自己的适配器以省为例
附上完整版Demo及SQL
数据源解决。因为数据量比較大通过初始化批量运行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及数据)
- WheelView实现省市区三级联动(数据库实现版本附带完整SQL及数据)
- 用JS实现省市区三级联动 (数据从数据库查出)
- 读取本地json数据实现省市区三级联动PickerView
- 史上最完整的省市县/区数据 三级联动数据库
- javascript实现省市区三级联动选择的代码(数据为模拟json数据)
- 用DropDownList控件绑定XML数据实现省市区三级联动
- 高仿iOS 滚轮实现 省市区 城市选择三级联动,无需自己配置省市区域的数据
- 网络请求省市区实现UIPickerView三级联动
- springMVC+MyBatis+Oracle+Web实现增删改查(附带完整案例+数据库数据)
- Android中使用开源框架Citypickerview实现省市区三级联动选择
- jQuery 读取XML数据实现省市区三级联动
- 安卓学习笔记---Android-PickerView实现 3D滚轮效果(时间选择器、省市区三级联动,单项选择效果)
- Android中使用开源框架citypickerview实现省市区三级联动选择
- Android中使用开源框架Citypickerview实现省市区三级联动选择
- 用js读取XML数据实现省市区的三级联动
- TreeView加载数据库数据的三种方法实现三级联动
- 数据库动态加载省市区信息,实现三级联动
- 省市县三级联动无刷新(附带数据sql)
- Android中使用开源框架citypickerview实现省市区三级联动选择