天气项目·Bean

一、FutureWeatherBean

输出未来各天的天气情况吗,内含变量:temperture、 wind、 weather、week。

(一)初始化(Ctrl+1)

(二)get( )/set( )函数。(右键->source->Generate Getters and Setters)

二、WeatherBean

读取JSON数据。通过JSONObject来创建WeatherBean对象


JSON数据格式:键值对

相对应的,Bean里含有私有数据:cityName、cityId、week、dateY、weather、pm、pmLevel、wind、temperture、windLevel、ArrayListfutureWeatherList;

private ArrayList<FutureWeatherBean> futureWeatherList;//一个Bean的动态数组

(一)构造函数(Ctrl+1)

初:构造函数中,从JSON数据读出相应的数据。在mainActivity中有JsonObject对象:weatherJsonObject,用for循环从对象中读取出数据(weatherJsonObject.getString),并放入String对象。最后将读取出来的数据放入一个Bean对象。

此外,所有的try-catch中的异常都放大,如:IOException->Exception.

futureWeatherList = new ArrayList<FutureWeatherBea>();//初始化数组

try {    //会抛出异常,Ctrl+1,添加try-catch

cityName =weatherJsonObject.getString("city");

cityId = weatherJsonObject.getInt("cityid")...//通过JsonObject的key获取值,并赋给字符串

for (int i = 1; i < 7; i++) {

String futureWeather = weatherJsonObject.getString("weather"+ i);//json里的变量名是weather1

String futureWeek = getFutureWeekStringBy(week, i)...//依次获取futureTemperture, futureWind

FutureWeatherBean futureWeatherBean = new FutureWeatherBean(futureTemperture, futureWind, futureWeather, futureWeek);// 封装成一个FutureWeatherBean。注意有数组属性时一定要初始化数组才能使用

futureWeatherList.add(futureWeatherBean);}//添加到List里

} catch (Exception e) {

e.printStackTrace();}}

后:将部分程序进行封装,相应地改为:以String resultString作为返回值的构造方法。并新写private String dealWithResultString(String resultString) 方法。在try的开头添加:

String resultJsonString = dealWithResultString(resultString);//新添方法

JSONObject jsonObject = new JSONObject(resultJsonString);// 通过JSON字符串创建JSONObject的对象

JSONObject weatherJsonObject = jsonObject.getJSONObject("weatherinfo");//取出JSON数据里的"weatherinfo"并赋给weatherJsonObject

总而言之:构造方法是将JSON数据里有用的信息提取出来封装成一个FutureWeatherBean

实现方法:将JSON数据里的"weatherinfo"并赋给weatherJsonObject,再将weatherJsonObject里的数据依次取出赋值给String字符串再将各字符串封装成一个FutureWeatherBean

(二)get( )/set( )函数。(右键->source->Generate Getters and Setters)


(三)private String dealWithResultString(String resultString)


int startIndex = resultString.indexOf("(") + 1;// 找到左右括号在字符串中的位置。

int endIndex = resultString.indexOf(")");

return resultString.substring(startIndex, endIndex);// 根据左右括号的位置截取中间的JSON字符串。


(四)private String getFutureWeekStringBy(String week2, int itemIndex)

一个关于获取明天是"星期X"的小算法

ArrayList <String> weekStringList = new ArrayList();//new 一个动态数组,用于存放“星期X”

weekStringList.add("星期一")...//把“星期X”添加到StringList里

int currentDayIndex = weekStringList.indexOf(week);//今天的下标:值为“星期一”,对应下标为:0。(JSON里有键值对:"week": "星期一")

int futureDayIndex = currentDayIndex + itemIndex;//计算明天的下标

if (futureDayIndex > 6)    futureDayIndex -= 7;// 一共七天,循环

return weekStringList.get(futureDayIndex);//根据计算的下标返回String

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,817评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,329评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,354评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,498评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,600评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,829评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,979评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,722评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,189评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,519评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,654评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,329评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,940评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,762评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,993评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,382评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,543评论 2 349

推荐阅读更多精彩内容

  • 前言 多年以前自学Java,在本地做了一些笔记。最近几年流行播客,一方面防止丢失,一方面可以帮助其他小伙伴...
    chaohx阅读 1,032评论 0 3
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,598评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,633评论 18 139
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 3,783评论 1 10
  • 今年的毕业季,走了趟中国美院象山校区,作为一名跟设计好不搭边的普通人,新生的设计师们的毕业设计让我真切的感受到了设...
    柳絮XM阅读 454评论 7 14