先来看一下简单的效果图:

在这个项目的基础上修改完善的,参考链接 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下载地址

年月日滚轮同样的效果实现起来比省市区简单,如下图:

更多相关文章

  1. 一句话锁定MySQL数据占用元凶
  2. 作为一个Android开发者,你迷茫了吗?(内附1T大数据学习资料)
  3. android jni中将大数据回调到java层的时候用法,比如视频流,音频流
  4. Android——数据库存储(简单使用增、删、改、查)(含源码下载)
  5. 详解android的号码匹配
  6. Android(安卓)sqlite数据库操作通用框架AHibernate(三)-升级为1.
  7. android多线程详解之Handler
  8. [置顶] Android之路——第一个上线 APP项目总结
  9. android 数据库处理及操作

随机推荐

  1. [置顶] Android(安卓)NDK开发轻松入门
  2. Android(安卓)之父鲁宾迈向新征程:人工智
  3. android应用程序基本原理
  4. Android(安卓)Gradle知识点总结
  5. Adobe不再为Android提供Flash,移动Flash死
  6. 基于Android(安卓)Bionic 库动态编译busy
  7. 实现了 Android(安卓)设备之间通过 Wifi
  8. Android(安卓)播放gif
  9. Android(安卓)开发者的下半场
  10. Android(安卓)Binder机制之 ServiceManag