android天气查询(二)之网络json数据的获取

     前面一篇文章介绍了如何使用ksoap获取天气信息,但是使用的网络资源受到了限制,所以我们这里会采用第二种方法,可以无限制的获取。http://m.weather.com.cn/data/101010100.html 但是对应的101010100(北京)我们怎么获取呢,还有就是图片资源怎么来的呢?http://m.weather.com.cn/img/b1.gif这个是图片资源,但是每次从网上去还是比较费流量的,我仔细对比了Ksoap中给的gif图片资源,和中国气象局的这个图片都是一一对应的,所以这里我会做成本地图片。

 

{"weatherinfo":{<!-- 基本信息 -->"city":"北京","city_en":"北京","date_y":"2013年5月14日","date":"","week":"星期一","fchh":"08","cityid":"101010100",<!-- 从今天开始到第六天的每天的天气情况,这里的温度是摄氏温度 -->"temp1":"29℃~23℃","temp2":"26℃~20℃","temp3":"24℃~20℃","temp4":"25℃~20℃","temp5":"24℃~21℃","temp6":"25℃~22℃",<!-- 从今天开始到第六天的每天的天气情况,这里的温度是华氏温度 -->"tempF1":"84.2℉~73.4℉","tempF2":"78.8℉~68℉","tempF3":"75.2℉~68℉","tempF4":"77℉~68℉","tempF5":"75.2℉~69.8℉","tempF6":"77℉~71.6℉",<!-- 天气描述 -->"weather1":"阵雨转中雨","weather2":"中雨转小雨","weather3":"小雨","weather4":"小雨","weather5":"小雨转阵雨","weather6":"阵雨转小雨",<!-- 天气描述图片序号 -->"img1":"3","img2":"8","img3":"8","img4":"7","img5":"7","img6":"99","img7":"7","img8":"99","img9":"7","img10":"3","img11":"3","img12":"7","img_single":"3",<!-- 图片名称 -->"img_title1":"阵雨","img_title2":"中雨","img_title3":"中雨","img_title4":"小雨","img_title5":"小雨","img_title6":"小雨","img_title7":"小雨","img_title8":"小雨","img_title9":"小雨","img_title10":"阵雨","img_title11":"阵雨","img_title12":"小雨","img_title_single":"阵雨",<!-- 风速描述 -->"wind1":"微风","wind2":"微风","wind3":"微风","wind4":"微风","wind5":"微风","wind6":"微风","fx1":"微风","fx2":"微风",<!-- 风速级别描述 -->"fl1":"小于3级","fl2":"小于3级","fl3":"小于3级","fl4":"小于3级","fl5":"小于3级","fl6":"小于3级",<!-- 今天穿衣指数 -->"index":"热","index_d":"天气较热,建议着短裙、短裤、短套装、T恤等夏季服装。年老体弱者宜着长袖衬衫和单裤。",<!-- 48小时穿衣指数 -->"index48":"暖","index48_d":"较凉爽,建议着长袖衬衫加单裤等春秋过渡装。年老体弱者宜着针织长袖衬衫、马甲和长裤。",<!-- 紫外线及48小时紫外线 -->"index_uv":"弱","index48_uv":"最弱",<!-- 洗车 -->"index_xc":"不宜",<!-- 旅游 -->"index_tr":"适宜",、<!-- 舒适指数 -->"index_co":"较不舒适","st1":"27","st2":"21","st3":"24","st4":"18","st5":"22","st6":"18",<!-- 晨练 -->"index_cl":"较不宜",<!-- 晾晒 -->"index_ls":"不太适宜",<!-- 过敏 -->"index_ag":"不易发"}
}

下面我主要讲下程序:                                                                            

1.1城市代码获取                                                    

  这里我把下载下来的城市代码的空行给去掉了,把文件保存为txt格式(UTF-8另存为可以看见)。下载地址:http://download.csdn.net/detail/feiyangxiaomi/6261685程序中的读取方法为:

 

/**************************************************************************************** 注意在读入txt的时候是UTF-8,自己看好自己的txt文本格式,在另存为就可以看出来。*/
private Map<String,String> cityCodes;	//根据城市信息索引自己的code
private List<String> citys;				//给城市做数据源	
private void getAssetsContent(){try {String buf;citys = new ArrayList<String>();cityCodes = new HashMap<String, String>();InputStream input = this.getAssets().open("cityCode.txt");BufferedReader br = new BufferedReader(new InputStreamReader(input,"UTF-8"));while((buf = br.readLine())!=null){String[] codeCity = buf.split("=");citys.add(codeCity[1]);cityCodes.put(codeCity[1], codeCity[0]);}} catch (IOException e) {// TODO Auto-generated catch blockLog.i(TAG, e.toString());e.printStackTrace();}
}


在使用的时候直接索引对应的城市即可。文件夹放在assets目录下,为不受编译才部分。

 

1.2网络数据的使用                                                    

 

private void refreshUI(JSONObject jsonobject){JSONObject jsonData = jsonobject;try{TextView today_text = (TextView) findViewById(R.id.today);today_text.setText(jsonData.getString("date_y"));TextView city_text = (TextView) findViewById(R.id.city_text);city_text.setText(jsonData.getString("city"));TextView today_weather = (TextView) findViewById(R.id.today_weather);today_weather.setText(jsonData.getString("weather1"));// 取得<string>15℃/21℃</string>中的数据TextView qiweng_text = (TextView) findViewById(R.id.qiweng);qiweng_text.setText(jsonData.getString("temp1"));// 取得<string>今日天气风速情况TextView shidu_text = (TextView) findViewById(R.id.shidu);shidu_text.setText(jsonData.getString("wind1"));// 取得<string>东北风3-4级</string>中的数据TextView fengli_text = (TextView) findViewById(R.id.fengli);fengli_text.setText(jsonData.getString("fl1"));// 取得<string>舒适指数和紫外线强度TextView kongqi_text = (TextView) findViewById(R.id.kongqi);kongqi_text.setText(jsonData.getString("index_co"));TextView zhiwai_text = (TextView) findViewById(R.id.zhiwai);zhiwai_text.setText(jsonData.getString("index_uv"));// 设置小贴士数据TextView xiaotieshi_text = (TextView) findViewById(R.id.xiaotieshi);xiaotieshi_text.setText("今日小贴士:"+jsonData.getString("index_d"));// 设置当日图片ImageView image = (ImageView) findViewById(R.id.imageView1);int icon = parseIcon(jsonData.getString("img1")+".gif");image.setImageResource(icon);// 取得第二天的天气情况TextView tomorrow_date = (TextView) findViewById(R.id.tomorrow_date);tomorrow_date.setText(jsonData.getString("weather2"));TextView tomorrow_qiweng = (TextView) findViewById(R.id.tomorrow_qiweng);tomorrow_qiweng.setText(jsonData.getString("temp2"));TextView tomorrow_tianqi = (TextView) findViewById(R.id.tomorrow_tianqi);tomorrow_tianqi.setText(jsonData.getString("wind2"));ImageView tomorrow_image = (ImageView) findViewById(R.id.tomorrow_image);int icon1 = parseIcon(jsonData.getString("img3")+".gif");tomorrow_image.setImageResource(icon1);// 取得第三天的天气情况TextView afterday_date = (TextView) findViewById(R.id.afterday_date);afterday_date.setText(jsonData.getString("weather3"));TextView afterday_qiweng = (TextView) findViewById(R.id.afterday_qiweng);afterday_qiweng.setText(jsonData.getString("temp3"));TextView afterday_tianqi = (TextView) findViewById(R.id.afterday_tianqi);afterday_tianqi.setText(jsonData.getString("wind3"));ImageView afterday_image = (ImageView) findViewById(R.id.afterday_image);int icon2 = parseIcon(jsonData.getString("img5")+".gif");afterday_image.setImageResource(icon2);// 取得第四天的天气情况TextView nextday_date = (TextView) findViewById(R.id.nextday_date);nextday_date.setText(jsonData.getString("weather4"));TextView nextday_qiweng = (TextView) findViewById(R.id.nextday_qiweng);nextday_qiweng.setText(jsonData.getString("temp4"));TextView nextday_tianqi = (TextView) findViewById(R.id.nextday_tianqi);nextday_tianqi.setText(jsonData.getString("wind4"));ImageView nextday_image = (ImageView) findViewById(R.id.nextday_image);int icon3 = parseIcon(jsonData.getString("img7")+".gif");nextday_image.setImageResource(icon3);}catch(Exception e){e.printStackTrace();}}

这里我们直接获取网络上的JSON数据,把数据放入对应的位置即可,图片资源的使用方法不变,还是放在本地drawalbe文件下。

 

1.3图片资源的使用                                                    

 

// 工具方法,该方法负责把返回的天气图标字符串,转换为程序的图片资源ID。
private int parseIcon(String strIcon)
{if (strIcon == null)return -1;if ("0.gif".equals(strIcon))return R.drawable.a_0;if ("1.gif".equals(strIcon))return R.drawable.a_1;if ("2.gif".equals(strIcon))return R.drawable.a_2;if ("3.gif".equals(strIcon))return R.drawable.a_3;

……

 

这里就不全部贴上了。

1.4最重要的一件事情                                                    

(1)源码http://download.csdn.net/detail/feiyangxiaomi/6261805(2)资源(源码里面有)



 

转载于:https://www.cnblogs.com/james1207/p/3320080.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277357.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

累.....

今天我真的蔫了&#xff0c;好累&#xff0c;脑子也好浊&#xff0c;但是还好&#xff0c;最终达到了预期的目的。我终于把henry的dataGrid实现了&#xff0c;犯了低级错误&#xff0c;和好多人讨论&#xff0c;但最终还是henry解决的。那一刻&#xff0c;真的好爽&#xff0c;…

linux cp 时 略过文件,CentOS下执行cp命令式提示略过文件夹

今天在CentOS下复制一个文件夹到另一个文件夹的时候cp ./res /usr 的时候出现了问题&#xff0c;提示我的是&#xff1a;cp略过了文件夹后来我找了一下在网上search了一下CP命令的用法&#xff1a;CP命令该命令的功能是将给出的文件或目录拷贝到另一文件或目录中&#xff0c;同…

hibernate详解

Hibernate原理与应用 主要内容 1、引入 2、安装配置 3、基本概念和CURD 4、HQL和Criteria 5、关联映射 6、继承映射 7、集合映射 8、懒加载 9、缓存 10、事务 11、其他 12、Hibernate不适合的场景 13、与JPA的集成(annotation方式) 14、最佳实践 1、引入 模型不匹配(阻抗不匹配…

Android Studio 环境搭建参考,jdk10javac命令提示不是内部或外部命令

https://blog.csdn.net/qq_33658730/article/details/78547789 win10下Android Studio和SDK下载、安装和环境变量配置 http://yanmin99.com/ android-0基础从入门到精通 环境变量ANDROID_HOMEE:\Program Files (x86)\Android\SdkJAVA_HOMEE:\Program Files\Java\jdk1.8.0_161TO…

报表引擎 - 数据模型

介绍 本文档是报表模型的数据模型部分&#xff0c;说明平台报表中涉及的报表数据相关 术语 名称 说明 数据源 数据源是与数据存储的连接。支持数据源适配 数据集 定义报表数据来源的一个二维表 参数 报表往往有参数&#xff0c;例如&#xff0c;日报表&#xff0c;当…

分层架构web容器的配置安全

转自&#xff1a;http://hi.baidu.com/shineo__o/item/7520d54c24d234c71081da82 /ps:本以为这是一个偶然配置失误造成的问题&#xff0c;但最近几天无聊时测试发现&#xff0c;有此类似问题的站点就有上百个&#xff0c;所以在这里粗糙总结一下&#xff01; 通常我们会碰到这样…

Jenkins-Gitlab配置方法

1&#xff09;本机首先安装好git软件2&#xff09;然后安装gitlab插件,在可选插件中查找gitlab,点击直接安装3&#xff09;然后进入系统管理-系统设置 首先进入Gitlab中复制需要的 token 值在 Profile Settings - Account把复制的值&#xff0c;复制到新增页面中转载于:https:…

高速缓冲存储器的功能、结构与工作原理

2.3 高速缓冲存储器&#xff08;Cache&#xff09; 2.3.1 高速缓冲存储器的功能、结构与工作原理   高速缓冲存储器是存在于主存与CPU之间的一级存储器&#xff0c; 由静态存储芯片(SRAM)组成&#xff0c;容量比较小但速度比主存高得多&#xff0c; 接近于CPU的速度。 Cache…

spring集成RabbitMQ配置文件详解(生产者和消费者)

1&#xff0c;首先引入配置文件org.springframework.amqp&#xff0c;如下&#xff1a; <dependency><groupId>org.springframework.amqp</groupId><artifactId>spring-rabbit</artifactId><version>1.7.1.RELEASE</version></de…

Multiverse: Revolutionary Backend for Alembic // Multiverse: 下一代Alembic后端

J CUBE&#xff0c;日本最大的动画公司Polygon Picture&#xff08;以下简称PPI&#xff09;公司成立的专职R&D公司隆重推出Multiverse&#xff0c;下一代Alembic存储后端。 我们还开发了针对Autodesk Maya的工具&#xff0c;运用Multiverse在流程中。 "multiverse&qu…

近半年能力没进步原因分析与求助

2019独角兽企业重金招聘Python工程师标准>>> 20180907 思维方式有缺陷&#xff0c;想到的解决方法经常不是最有效率的。导致工作时间内基本没自由学习的时间。 业余时间不够专注&#xff0c;学习方向经常变&#xff0c;没能坚持搞透一个点就换书看&#xff0c;没有总…

windows下安装Redis并部署成服务

文章来源&#xff1a;https://www.cnblogs.com/weiqinl/p/6490372.html windows下安装Redis并部署成服务 Redis 是一个开源&#xff08;BSD许可&#xff09;的&#xff0c;内存中的数据结构存储系统&#xff0c;它可以用作数据库、缓存和消息中间件。 一&#xff1a;下载 下载地…

.net core高性能通讯开源组件BeetleX

BeetleX beetleX是基于dotnet core实现的轻量级高性能的TCP通讯组件&#xff0c;使用方便、性能高效和安全可靠是组件设计的出发点&#xff01;开发人员可以在Beetlx组件的支持下快带地构建高性能的TCP通讯服务程序&#xff0c;在安全通讯方面只需要简单地设置一下SSL信息即可实…

按组排名

rank() over,dense_rank() over,row_number() over的区别 1.rank() over&#xff1a;查出指定条件后的进行排名。特点是&#xff0c;加入是对学生排名&#xff0c;使用这个函数&#xff0c;成绩相同的两名是并列&#xff0c;下一位同学空出所占的名次。 select name,subject,sc…

[FxCop.设计规则]13. 定义自定义属性参数的访问属性

13. 定义自定义属性参数的访问属性 翻译概述&#xff1a; 一个比较无聊的规则&#xff0c;实在看不出在什么情况下&#xff0c;一个开发者会做出违反这条规则的设计。没有别的内容&#xff0c;只是说应该为自定义特性的构造函数中的参数提供一个相关的属性去读取它们的值。…

centos7安装Cloudera Manager

第一部分&#xff1a;准备工作一&#xff0c;修改hostname $vim /etc/sysconfig/network $source /etc/sysconfig/network例如&#xff1a; NETWORKINGyes HOSTNAMEspark01reboot重启服务器 二&#xff0c;关闭selinux查看SELinux状态1&#xff0c;/usr/sbin/sestatus -v #如果…

Grove——.NET中的ORM实现

Grove——.NET中的ORM实现 发布日期&#xff1a; 6/30/2005| 更新日期&#xff1a; 6/30/2005作者&#xff1a;林学鹏 ORM的全称是Object Relational Mapping&#xff0c;即对象关系映射。它的实质就是将关系数据&#xff08;库&#xff09;中的业务数据用对象的形式表示出来&a…

[book]道法自然

前不久读了王咏刚的〈凌波微步〉和〈凌波微步II〉&#xff0c;感觉不错。今天把他老人家的《道法自然》也买了下来。在dearbook看到关于这本书的长篇大评&#xff0c;也一块copy了下来&#xff1a;http://www.dearbook.com.cn/book/viewbook.aspx?pnoTS0023954认真的作者&…

列表嵌套字典,根据字典某一key排序

在返回列表嵌套字典时候&#xff0c;往往需要对数据进行一定的处理&#xff1a;按照字典中某一个key排序 In [87]: a [{"name": "牛郎", "age": 23},{"name":"许仙", "age": 20},{"name":"董永&q…

写出C语言中5种数据类型的名称及其关键字,求C语言中的32个关键字及其意思?...

关键字如下&#xff1a;一、数据类型关键字(12个)&#xff1a;(1) char &#xff1a;声明字符型变量或函数(2) double &#xff1a;声明双精度变量或函数(3) enum &#xff1a;声明枚举类型(4) float&#xff1a;声明浮点型变量或函数(5) int&#xff1a; 声明整型变量或函数(6…