学习《android第一行代码》根据书本开发的天气预报app,主要用于熟练操作android开发(android studio3.0平台)。
今天主要分享一下从服务器上获取天气信息,通过ListView绑定数据的操作(可以采用RecycleView),然后进行页面点击跳转。
一、 服务器返回数据预览
通过本书作者提供的访问地址,guolin.tech/api/china,直接打开可以访问到全国各地的天气信息,guolin.tech/api/china/16/116
(如点击无法打开,请直接复制链接在浏览器中访问)
[
{"id":1,"name":"北京"},{"id":2,"name":"上海"},{"id":3,"name":"天津"},{"id":4,"name":"重庆"},
{"id":5,"name":"香港"},{"id":6,"name":"澳门"},{"id":7,"name":"台湾"},{"id":8,"name":"黑龙江"},
{"id":9,"name":"吉林"},{"id":10,"name":"辽宁"},{"id":11,"name":"内蒙古"},{"id":12,"name":"河北"},
{"id":13,"name":"河南"},{"id":14,"name":"山西"},{"id":15,"name":"山东"},{"id":16,"name":"江苏"},
{"id":17,"name":"浙江"},{"id":18,"name":"福建"},{"id":19,"name":"江西"},{"id":20,"name":"安徽"},
{"id":21,"name":"湖北"},{"id":22,"name":"湖南"},{"id":23,"name":"广东"},{"id":24,"name":"广西"},
{"id":25,"name":"海南"},{"id":26,"name":"贵州"},{"id":27,"name":"云南"},{"id":28,"name":"四川"},
{"id":29,"name":"西藏"},{"id":30,"name":"陕西"},{"id":31,"name":"宁夏"},{"id":32,"name":"甘肃"},
{"id":33,"name":"青海"},{"id":34,"name":"新疆"}
]
如上面看到的可以获取到各省的信息,通过id可以进一步的获取市县的信息。
二、创建本地数据存储
根据服务器中获取的数据属性,创建Province、City、County三个数据表分别存储省、市、县的信息。
创建数据表采用Litepal,这里需要导入外部库,需要在build.gradle中添加
implementation 'org.litepal.android:core:1.4.1'
(注implemention为android3.0以上版本才有的,与compile并不完全一样,这里不多做解释,2.0版本采用compile不影响
同时在加载外部库时可能出现无法引用的问题,请清理项目后重新build)
后面1.4.1是版本号,可以查询官网获取最新版本
下面附上三个数据表类,由于是采用Litepal需要继承DataSupport
public class Province extends DataSupport { private int id; private String provinceName; private int provinceCode; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getProvinceName() { return provinceName; } public void setProvinceName(String provinceName) { this.provinceName = provinceName; } public int getProvinceCode() { return provinceCode; } public void setProvinceCode(int provinceCode) { this.provinceCode = provinceCode; } }
public class City extends DataSupport { private int id; private String cityName; private int cityCode; private int provinceId; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getCityName() { return cityName; } public void setCityName(String cityName) { this.cityName = cityName; } public int getCityCode() { return cityCode; } public void setCityCode(int cityCode) { this.cityCode = cityCode; } public int getProvinceId() { return provinceId; } public void setProvinceId(int provinceId) { this.provinceId = provinceId; } }