整理一下完成的思路,并附上部分代码和注释以及自己的理解。
(看到有同学问,附上项目地址:https://github.com/LittleFogCat/coolweather)
逻辑部分
一、首先通过网络接口获得全国省市县的列表。
1. 新建一个HttpUtil类,在其中创建一个sendOkHttpRequest()方法:
2. 新建Province, City, County类,分别用于保存省市县的数据。
配置assets/litepal.xml
配置Manifest-Application
4. 新建Utility类,用于处理返回的json数据
很简单,利用JSONObject处理json数据,并调用save()方法保存入数据库中。
5. 新建遍历省市县的Fragment
二、通过查询到结果获得天气数据:
0. 由于传回的JSON数据较为复杂,故使用Gson来解析传回的数据。
1. 定义Gson实体类:
由于返回的数据格式大致为:
2. 显示查询到的天气
在Utility中新建一个用于解析传回天气数据的方法:
天气显示部分使用一个DrawerLayout,其中drawer中放了一个选择地区的Fragment,主要部分则是各种显示天气信息的TextView嵌套在一个SwipeRefreshLayout中,用于下拉刷新的实现。
原程序暂时遇到几个地方是有缺陷的:
1. 在获取省市区数据的时候,如果第一次从服务器没有获得正确、完整的数据,那么之后程序在查询的时候,虽然数据不完整,但是数据库并不为空,依然会通过本地查询,这样就会因为得不到需要的数据造成空指针异常。可捕获此异常,并删除数据库中数据,重新从服务器查询。
2. 如果服务器返回的天气数据不是正确、完整的,在通过weather取天气数据的时候则会得到一个null对象而不是字符串。这里不能用于显示,可加一个判断,不为null再赋值。
3. 在第一次选择城市之后,之后不管选择哪个城市,刷新之后都会显示第一次选择城市的天气。可通过改变传入参数来调整。
1. 优化部分逻辑,使运行更加稳定可靠,减少了出错崩溃的可能性:
增加了数据完整性判断
2. 增加了空气质量指数的分级,并用不同的颜色划分;
3. 改变了自动更新的方式,减少电量和流量消耗;
今天的文章 天气预报 接口(天气预报接口源码)分享到此就结束了,感谢您的阅读。
4. 部分界面效果调优。
效果图:


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/41576.html