Develop And Improve。
今天完成了省市县列表的构建,以及定位功能的实现。首先在activity包下新建了ChooseAreaActivity活动负责构建城市选择列表,在layout文件夹下新建choose_area.xml对应此活动布局,
1 | <?xml version="1.0" encoding="utf-8"?> |
很简单的一个布局,最上方TextView显示当前地域信息充当标题栏,下方一个Button用来定位,Button底下ListView负责显示省市县内容。
在ChooseAreaActivity中首先定义以及绑定控件,通过ListView点击事件判断当前层次进而执行相应的查询函数
1 | listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { |
三个query函数基本相同
1 | /** |
首先从数据库查询省,如果数据为空则调用queryFromServer函数从服务器查询相应信息
1 | /** |
在这个函数里调用了封装在工具包里的处理Response的几个函数将数据存储到数据库,由于只能在主线程里更新UI,所以调用runOnUiThread来回调相应query函数更新UI,这样就实现了省市县三级列表。
首先按图所示导入相应jar包并添加依赖

在util包下新建LocationApplication类负责定位功能,代码如下
1 | public class LocationApplication extends Application { |
百度定位SDK可提供相当多的回馈信息,这里我是在官方提供的示例代码下进行了部分修改最终只获得地理位置信息
在做这个时候浪费了很多时间,因为百度定位SDK无法在虚拟机下成功运行,所以我在调试时候一直返回错误码167,即服务端定位失败,后来在官方论坛才发现只能在真机下调试定位功能
同时在util包下使用了百度demo中提供的Utils类储存了错误码对应的原因
在ChooseAreaActivity类中为定位按钮添加了点击事件,并写了getLocation()方法获得定位信息
1 | /** |
到这里只是通过Toast来调试定位功能是否正常,后续代码还需要对回馈信息处理只获得天气Api中所需的内容
解析Api返回的JSON数据,不知道如何将多层JSON数组解析成单层的,对于下面这段JSON数据也不知道如何取出拥有同一名称的值
1 | "HeWeather data service 3.0": [ |
比较迷…..