自己实现简单的天气预报应用(2)

2.设计模型层

从上一篇中获得的天气预报情况类似这样:

        {
            "temp_low": "7",    //最低温度
            "cityno": "chengdu",
            "wind": "北风",   //风向
            "citynm": "成都", //城市/地区
            "weaid": "265",
            "winpid": "125",    //风力id
            "windid": "20", //风向id
            "weatid1": "8",
            "humi_high": "0",   //最高湿度
            "temperature": "12℃\/7℃",//最高温度和最低温度
            "cityid": "101270101",
            "temp_high": "12",  //最高温度
            "humidity": "0℉\/0℉",   //湿度范围
            "weather_icon": "http:\/\/api.k780.com:88\/upload\/weather\/d\/2.gif",
            "days": "2015-03-03",//日期
            "weatid": "3",
            "humi_low": "0",    //最低湿度
            "weather": "阴转小雨",  //天气
            "winp": "微风",   //风力
            "weather_icon1": "http:\/\/api.k780.com:88\/upload\/weather\/n\/7.gif",
            "week": "星期二"   //星期
        },

从中提取出一些最简的信息来画结构:

抽象出来的一天天气情况的实体类是这样的:

  1   2
  3 import org.json.JSONException;
  4 import org.json.JSONObject;
  5
  6 public class WeatherItem {
  7
  8     private static final String JSON_DATE="date";
  9     private static final String JSON_WEEK="week";
 10     private static final String JSON_TEMP_LOW="temp_low";
 11     private static final String JSON_TEMP_HIGH="temp_high";
 12     private static final String JSON_HUMI_LOW="humi_low";
 13     private static final String JSON_HUMI_HIGH="humi_high";
 14     private static final String JSON_WEATHER="weather";
 15     private static final String JSON_WINP="winp";
 16     private static final String JSON_WIND="wind";
 17
 18     private String date;//日期
 19     private String week;//星期
 20
 21     private int temp_low;//最低温度
 22     private int temp_high;//最高温度
 23
 24     private int humi_low;//最低湿度
 25     private int humi_high;//最高湿度
 26
 27     private String weather;//天气
 28     private String winp;//风力
 29     private String wind;//风向
 30
 31     public JSONObject toJson() throws JSONException{
 32         JSONObject json=new JSONObject();
 33         json.put(JSON_DATE,date);
 34         json.put(JSON_WEEK,week);
 35         json.put(JSON_TEMP_LOW,temp_low);
 36         json.put(JSON_TEMP_HIGH,temp_high);
 37         json.put(JSON_HUMI_LOW,humi_low);
 38         json.put(JSON_HUMI_HIGH,humi_high);
 39         json.put(JSON_WEATHER,weather);
 40         json.put(JSON_WINP,winp);
 41         json.put(JSON_WIND,wind);
 42         return json;
 43     }
 44
 45     public String getDate() {
 46         return date;
 47     }
 48
 49     public void setDate(String date) {
 50         this.date = date;
 51     }
 52
 53     public String getWeek() {
 54         return week;
 55     }
 56
 57     public void setWeek(String week) {
 58         this.week = week;
 59     }
 60
 61     public int getTemp_low() {
 62         return temp_low;
 63     }
 64
 65     public void setTemp_low(int temp_low) {
 66         this.temp_low = temp_low;
 67     }
 68
 69     public int getTemp_high() {
 70         return temp_high;
 71     }
 72
 73     public void setTemp_high(int temp_high) {
 74         this.temp_high = temp_high;
 75     }
 76
 77     public int getHumi_low() {
 78         return humi_low;
 79     }
 80
 81     public void setHumi_low(int humi_low) {
 82         this.humi_low = humi_low;
 83     }
 84
 85     public int getHumi_high() {
 86         return humi_high;
 87     }
 88
 89     public void setHumi_high(int humi_high) {
 90         this.humi_high = humi_high;
 91     }
 92
 93     public String getWeather() {
 94         return weather;
 95     }
 96
 97     public void setWeather(String weather) {
 98         this.weather = weather;
 99     }
100
101     public String getWinp() {
102         return winp;
103     }
104
105     public void setWinp(String winp) {
106         this.winp = winp;
107     }
108
109     public String getWind() {
110         return wind;
111     }
112
113     public void setWind(String wind) {
114         this.wind = wind;
115     }
116 }

以上是可以使用了转换成JSONObject对象的方法的,因为按照设想,每次fetch数据后都要保存起来,然后加载到view上,

要存起来的原因是为了减小每天从网上更新的次数,因为每次查询都是七天,那么就不需要每天多次频繁更新,

因此可以设置为每天更新一次(这里要用到Alarm,后续用到Widget的时候也是这个周期),

为了方便用户,若要加入手动更新的话,需要知道当前查询的是那些数据,

为了简便,我的设想就是将当前已经查询到的数据存储到一个json文件中,然后通过时间来命名,

把命名之后的文件名保存到一个配置文件中,每次更新或是想要fetch数据的时候都从配置文件中读取当前数据并同当前时间比较,相同就不更新,反之更新并覆盖原数据,更新配置文件。

下一阶段应当是解析json数据并转换成Item写出到文件中了。

时间: 2024-10-13 01:12:00

自己实现简单的天气预报应用(2)的相关文章

阶段一:一个简单的天气预报应用的完整实现过程(一)

“阶段一”是指我第一次系统地学习Android开发.这主要是对我的学习过程作个记录. 在上一篇阶段一:解析JSON中提到,最近在写一个很简单的天气预报应用.即使功能很简单,但我还是想把它做成一个相对完整的应用.这样的话,像以前想到什么就做什么,显然是不行的,很容易就乱了.所以我就琢磨了一下,弄个什么,让自己的思路变得更加清晰,仅此而已. 经过一些思考和总结之后,我觉得可以是这么一个流程: 第一步:想好这个应用要实现什么功能,并罗列出来,然后就开始写代码,实现这些功能 说明:(1)对于这个模型的具

WP8.1开发:简单的天气预报应用

今天小梦给大家分享一个简单的天气预报应用源码:调用的是百度API.整个应用都没有什么难点.只是一个简单的网络请求和json数据处理.在WP8.1有小娜的情况下,天气预报应用还有意义吗?我认为还是有点意义的,至少数据更详细,而要想要用户喜欢,必须有比小娜更人性化的提醒和精美的UI.UI必须要精美.当然小梦今天分享的UI很简单.大家可以根据自己的想象去处理UI.之所以分享出来,是分享JSON的数据处理.在WP8.1开发XML读取中央气象城市代码文件中,分享了XML文件和JSON数据解析的方法,不过其

.net请求Webservice简单实现天气预报功能

很久没有接触Webservice的知识,今天稍微复习了一下关于webservice,简单做了一个天气预报的功能,虽然界面丑的厉害,但功能算是实现了,以下是效果展示. 这东西没什么难点,只是天气预报的功能在网站类的开发中会经常用到,所以就简单写下,以便以后查阅. 1.新建一个网站或者web应用程序,添加一个aspx页面,用于展示天气数据.(这个应该不用细讲吧) 2.在网上找一个免费的天气预报的接口,我用的是Webxml网站的,地址如下: http://webservice.webxml.com.c

Python 简单的天气预报

轻巧的树莓派一直是大家的热爱,在上面开发一些小东西让我们很有成就感,而在linux下,python能使麻烦的操作变得简单,而树莓派功耗还很低,相结合,完美! 1,直接进入正题,一般在linux或树莓派的raspberry的系统下会自动安装好python,而我们还需要python下的一个模块叫做requests,他需要pip安装,所以我们首先要安装pip curl -O https://bootstrap.pypa.io/get-pip.py python get-pip.py 2,安装好后安装r

自己实现简单的天气预报应用(6)

6.加入Widget小部件 由于小部件的存在,我们可以直接在启动器上查看某些数据,下面通过一个简单布局Widget的实现学习如何与Widget的Provider类通信,和如何用外部传入的数据初始化Widget, 首先,按照编写小部件的标准步骤,定义布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.

自己实现简单的天气预报应用(1)

记录一下我自己实现的一个天气预报应用的过程,这不是一个已经完成的应用,每次写下的都是实现的一个阶段,每个阶段解决一个问题. 1.获取天气预报的json数据 由于是在不想使用xml,在晚上查了很久才查到了一个可以用的返回json的天气预报请求http 这就是 http://www.k780.com/api/weather.future 构建的示例这个页面上已经给出: http://api.k780.com:88/?app=weather.future&weaid=1&appkey=10003

简单的天气预报Demo

一.需求 选择城市获得相应城市最近几天的天气预报 数据源: 1.全国城市列表xml -----http://yunpan.cn/cmMA5DrFeM4m6 (提取码:ccb1) 2.天气json数据源 http://weather.xcyh.org/101210401/json/6   101210401部分为城市的编号 二.设计思路 三个下拉列表 分别显示省.市.县的名字,一个按钮 为查询   一个ListView显示最近该城市几天的天气预报 xml解析获取城市名称集合,json解析获取天气

自己实现简单的天气预报应用(7)

7.从文件中加载数据,取消Intent消息传递 解决上一篇最后提出问题的一种思路如下: 在程序每次fetch数据的时候同步将当天气象数据写入一个文件中供widget调用,每次更新Widget的时候都从文件中加载数据, 修改的数据如下: 在解析工具类中加入一个方法: public static WeatherItem parseItem(String itemData) throws JSONException{ JSONObject object = (JSONObject) new JSONT

自己实现简单的天气预报应用(4)

4.数据的本地存储 从网络上获取的我称之为原始数据,解析之后保存的称为item数据,下面修改解析工具类来分别按照请求码来进行解析: 1 import org.json.JSONArray; 2 import org.json.JSONException; 3 import org.json.JSONObject; 4 import org.json.JSONTokener; 5 6 import java.util.ArrayList; 7 8 public class ParseTools {