Android省市区滚轮默认显示已选择的项
2015-12-14 19:34
381 查看
该功能目前已集成到好旅App(1.7Version)中
先来看一下简单的效果图:
在这个项目的基础上修改完善的,参考链接 Android省市区三级联动滚轮选择(真实项目中提取出来的组件)
该项目对我的需求来说,存在以下几个问题:
1、省市区的xml数据中没有相应的Id,我的要求是用Id和服务器交互的
2、滑动市后,点击确定区级数据显示的还是最初的数据–昌平区,解决方法在那个博文的评论区里有人给出来了,就是在updateAreas() 方法里加了
3、省市区默认选择项永远是第一项,我的要求是能默认显示已选择的项(本文主题)
解决思路想想也很简单,就是通过数据库,但是略显繁琐,只是目前也只能想到这样的方法了
Demo中的流程大体如下:
1、在第一个界面使用jxl把省市区数据的excel源文件转换成Android可以使用的db文件,耗时五秒左右,该操作只执行一次,然后跳转到第二个界面
2、点击TextView弹出日期滚轮弹框,选择好后点击确定把结果显示在文本上,再次点击时会根据保存在sharePreference中的Id查询省市区序号作为滚轮适配器的setCurrentItem方法的参数。
这段代码就是加了一个判断,判断构造方法里传过来的省市区数据是否为空,如果为空就使用默认的第一条数据,否则就使用当前数据
上面这段代码就是根据省id查询省的序号,isScrollWheel就是判断用户是否滑动了滚轮,如果滑动了滚轮就把数据置为第一条,否则就显示从数据库查询得到的结果序号
总结的有点乱,Demo代码也有很多可以优化的地方,仅当作个笔记记录用。
Demo下载地址
年月日滚轮同样的效果实现起来比省市区简单,如下图:
先来看一下简单的效果图:
在这个项目的基础上修改完善的,参考链接 Android省市区三级联动滚轮选择(真实项目中提取出来的组件)
该项目对我的需求来说,存在以下几个问题:
1、省市区的xml数据中没有相应的Id,我的要求是用Id和服务器交互的
2、滑动市后,点击确定区级数据显示的还是最初的数据–昌平区,解决方法在那个博文的评论区里有人给出来了,就是在updateAreas() 方法里加了
mCurrentDistrictName = mDistrictDatasMap.get(mCurrentCityName)[0];
3、省市区默认选择项永远是第一项,我的要求是能默认显示已选择的项(本文主题)
解决思路想想也很简单,就是通过数据库,但是略显繁琐,只是目前也只能想到这样的方法了
Demo中的流程大体如下:
1、在第一个界面使用jxl把省市区数据的excel源文件转换成Android可以使用的db文件,耗时五秒左右,该操作只执行一次,然后跳转到第二个界面
2、点击TextView弹出日期滚轮弹框,选择好后点击确定把结果显示在文本上,再次点击时会根据保存在sharePreference中的Id查询省市区序号作为滚轮适配器的setCurrentItem方法的参数。
if (provinceList != null && !provinceList.isEmpty()) { if (TextUtils.isEmpty(mCurrentProviceName)) { mCurrentProviceName = provinceList.get(0).getName(); mCurrentProviceId = provinceList.get(0).getId(); List<CityModel> cityList = provinceList.get(0).getCityList(); if (cityList != null && !cityList.isEmpty()) { mCurrentCityName = cityList.get(0).getName(); mCurrentCityId = cityList.get(0).getId(); List<DistrictModel> districtList = cityList.get(0).getDistrictList(); mCurrentDistrictName = districtList.get(0).getName(); mCurrentDistrictId = districtList.get(0).getId(); } } }
这段代码就是加了一个判断,判断构造方法里传过来的省市区数据是否为空,如果为空就使用默认的第一条数据,否则就使用当前数据
if(!isScrollWheel) { Cursor c3 = db .rawQuery( "select pnumber from table1 where pid = ? limit 1", new String[]{ mCurrentProviceId}); c3.moveToNext();// 去掉while循环 int currProviceItem = Integer.parseInt(c3.getString(c3.getColumnIndex("pnumber"))) - 1; c3.close(); mViewProvince.setCurrentItem(currProviceItem); }else { mViewProvince.setCurrentItem(0); }
上面这段代码就是根据省id查询省的序号,isScrollWheel就是判断用户是否滑动了滚轮,如果滑动了滚轮就把数据置为第一条,否则就显示从数据库查询得到的结果序号
总结的有点乱,Demo代码也有很多可以优化的地方,仅当作个笔记记录用。
Demo下载地址
年月日滚轮同样的效果实现起来比省市区简单,如下图:
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件