Android实战:CoolWeather酷欧天气(加强版数据接口)代码详解(上)

本文详细解析了《第一行代码(第二版)》实战项目酷欧天气的增强版数据接口,包括获取全国省市县数据信息的接口、解析JSON数据以及创建数据库和表。使用LitePal管理数据库,通过HttpUtil类与服务器交互,利用Utility类处理JSON数据,展示省市县数据。完整代码可在GitHub找到。

-----------------------------------该文章代码已停更,可参考浩比天气(更新于2019/6/25)-----------------------------------
拜读了郭霖大神的《第一行代码(第二版)》后,决定对其文末的酷欧天气实战项目进行数据扩充以及代码详解,完整文件请从我的GitHub中下载,想学习更多Android知识在看完本篇文章后请出门右转:京东当当亚马逊天猫PDFKindle豆瓣多看

具体步骤还是按照郭霖大神的分析思路来,外加一点点个人的认知。

目录(上)


##一、功能需求及技术可行性分析

1、确定APP应该具有的功能

  • 可以查询全国所有省、市、县的数据(列表)
  • 可以查询全国任意城市的天气
  • 可以切换城市查询天气
  • 可以手动更新以及后台自动更新天气

2、考虑数据接口问题

  • 如何得到全国省市县的数据信息
  • 如何获取每个城市的天气信息

3、获取全国省市县数据信息

4、获取每个城市的天气信息

5、解析数据

以和风天气为例(其他API接口的使用后期文章更新),获取和风天气返回的JSON格式的城市详细天气数据。取苏州的详细天气信息,如下图:

这里写图片描述

并对其进行分析:(选择你所需要的数据)

这里写图片描述

其中,aqi包含当前空气质量的情况。basic中包含城市的一些具体信息。daily_forecast中包含未来3天的天气信息。now表示当前的天气信息。status表示接口状态,“ok”表示数据正常,具体含义请参考接口状态码及错误码。suggestion中包含一些天气相关的生活建议。


##二、创建数据库和表

1、建立新的项目结构

在Android Studio中新建一个Android项目,项目名叫CoolWeather,包名叫做com.coolweather.android,之后一路Next,所有选项都使用默认就可以完成项目的创建。

这里写图片描述

为了让项目能有更好的结构,在com.coolweather.android包下再新建四个包。其中,db包用于存放数据库模型相关代码。gson包用于存放GSON模型相关的代码,service包用于存放服务相关代码,util包用于存放工具相关的代码。

2、将项目中所需的各种依赖库进行声明,编辑app/build.gradle文件,在dependencies闭包中添加如下内容:

dependencies {
   
   
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
   
   
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha7'
    testCompile 'junit:junit:4.12'
    compile 'org.litepal.android:core:1.6.0'
    compile 'com.squareup.okhttp3:okhttp:3.9.0'
    compile 'com.google.code.gson:gson:2.8.2'
    compile 'com.github.bumptech.glide:glide:4.3.1'
}

为了简化数据库的操作,我们使用LitePal来管理数据库。在dependencies闭包中,最后四行为新添加的声明,都更新为最新的版本号。其中,LitePal用于对数据库进行操作,OkHttp用于进行网络请求,GSON用于解析JSON数据,Glide用于加载和展示图片,以上四种声明都附有GitHub超链,可以点击进行深入了解。

3、设计数据库表结构

准备建立3张表:province、city、county,分别用于存放省、市、县的数据信息。对应到实体类中就是建立Province、City、County这三个类。由于LitePal要求所有的实体类都要继承自DataSupport这个类,所以三个类都要继承DataSupport类。

在db包下新建一个Province类,代码如下:

public class Province extends DataSupport{

    private int id;//实体类的id

    private String provinceName;//省的名字

    private int provinceCode;//省的代号

    //getter和setter方法
    public int getId(){
        return id;
    }

    public void setId(int id){
        this.id = id;
    }

    public String getProvinceName() {
        return provinceName;
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值