• 大小: 2.20M
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2020-12-23
  • 语言: Java
  • 标签: 联动  三级联动  

资源简介

最近项目要做一个,类似淘宝手机客户端的,选择收货地址的三级联动滚动选择组件,下面是它的大致界面截图:


在IOS中有个叫UIPickerView的选择器,并且在dataSource中定义了UIPickerView的数据源和定制内容,所以用只要熟悉它的基本用法,要实现这么个三级联动滑动选择是挺简单的。 

言归正传,今天讨论的是在Android里面如何来实现这么个效果,那么如何实现呢??? 相信部分童鞋首先想到的是android.widget.DatePicker和android.widget.TimePicker,因为它们的样子长得很像,事实就是它们仅仅是长得相而已,Google在设计这个两个widget的时候,并没有提供对外的数据源适配接口,带来的问题就是,我们只能通过它们来选择日期和时间,至于为什么这样设计,如果有童鞋知道,请给我留言,Thanks~

DatePicker.class包含的方法截图:

 全都是关于时间获取用的方法.


好了,既然在Android中没办法偷懒的用一个系统widget搞定,那么只能自己来自定义view来实现了,这篇就围绕这个来展开分享一下,我在项目中实现这个的全过程。首先是做了下开源代码调研,在github上面有一个叫做 android-wheel 的开源控件, 代码地址https://github.com/maarek/android-wheel

是一个非常好用的组件,对于数据适配接口的抽取和事件的回调都做了抽取,代码的耦合度低,唯一不足就是在界面的定制这块,如果你需要做更改,需要去动源代码的。我这里在界面的代码做了改动,放在我的项目src目录下了:


在此次项目中,省市区及邮编的数据是放在了assets/province_data.xml里面,是产品经理花了好几天时间整理的,绝对是最齐全和完善了,辛苦辛苦!!!

关于XML的解析,一共有SAX、PULL、DOM三种解析方式,这里就不讲了,可以看我的前面的几篇学习的文章:

Android解析XML方式(一)使用SAX解析

Android解析XML方式(二)使用PULL解析XML

Android解析XML方式(三)使用DOM解析XML


此次项目中使用的是SAX解析方式,因为它占用内存少,并且速度快,数据解析代码写在了 com.mrwujay.cascade.service/XmlParserHandler.java中,代码如下:


代码片段和文件信息

/** Automatically generated file. DO NOT MODIFY */
package com.zihao.city;

public final class BuildConfig {
    public final static boolean DEBUG = true;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-04-28 13:14  city\
     文件         475  2014-09-18 19:08  city\.classpath
     文件         840  2014-09-18 19:12  city\.project
     目录           0  2014-04-28 13:14  city\.settings\
     文件         177  2014-04-28 13:14  city\.settings\org.eclipse.jdt.core.prefs
     文件         870  2014-09-18 19:10  city\AndroidManifest.xml
     目录           0  2014-04-28 13:14  city\assets\
     文件      108337  2014-04-28 13:14  city\assets\area.json
     目录           0  2014-09-18 19:12  city\bin\
     文件         870  2014-09-18 19:12  city\bin\AndroidManifest.xml
     文件      388415  2014-09-18 19:12  city\bin\city.apk
     目录           0  2014-09-18 19:12  city\bin\classes\
     文件     1156324  2014-09-18 19:12  city\bin\classes.dex
     目录           0  2014-09-18 19:12  city\bin\classes\com\
     目录           0  2014-09-18 19:12  city\bin\classes\com\zihao\
     目录           0  2014-09-18 19:12  city\bin\classes\com\zihao\city\
     文件         337  2014-09-18 19:12  city\bin\classes\com\zihao\city\BuildConfig.class
     文件        4029  2014-09-18 19:12  city\bin\classes\com\zihao\city\CitycodeUtil.class
     文件        1012  2014-09-18 19:12  city\bin\classes\com\zihao\city\Cityinfo.class
     文件         982  2014-09-18 19:12  city\bin\classes\com\zihao\city\CityPicker$1.class
     文件        2953  2014-09-18 19:12  city\bin\classes\com\zihao\city\CityPicker$2.class
     文件        2420  2014-09-18 19:12  city\bin\classes\com\zihao\city\CityPicker$3.class
     文件        2257  2014-09-18 19:12  city\bin\classes\com\zihao\city\CityPicker$4.class
     文件        3771  2014-09-18 19:12  city\bin\classes\com\zihao\city\CityPicker$JSONParser.class
     文件         246  2014-09-18 19:12  city\bin\classes\com\zihao\city\CityPicker$onselectingListener.class
     文件        6125  2014-09-18 19:12  city\bin\classes\com\zihao\city\CityPicker.class
     文件       13464  2014-09-18 19:12  city\bin\classes\com\zihao\city\FileUtil.class
     文件         673  2014-09-18 19:12  city\bin\classes\com\zihao\city\MainActivity.class
     文件         702  2014-09-18 19:12  city\bin\classes\com\zihao\city\R$attr.class
     文件         449  2014-09-18 19:12  city\bin\classes\com\zihao\city\R$dimen.class
     文件         395  2014-09-18 19:12  city\bin\classes\com\zihao\city\R$drawable.class
............此处省略80个文件信息

评论

共有 条评论