- 浏览: 538084 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
tangyunliang:
大哥你太历害了谢谢
Android基于XMPP Smack Openfire开发IM【四】初步实现两个客户端通信 -
u013015029:
LZ,请问下,在// 添加消息到聊天窗口 , 这里获取Ed ...
Android基于XMPP Smack Openfire开发IM【四】初步实现两个客户端通信 -
endual:
怎么保持会话,我搞不懂啊
Android基于XMPP Smack Openfire开发IM【一】登录openfire服务器 -
donala_zq:
显示:[2013-11-30 11:50:36 - Andro ...
android-----------新浪微博 -
donala_zq:
哥,运行不了啊
android-----------新浪微博
XML解析实例--------获得天气预报数据
运行效果图:
[img]
[/img]
工程结构图:
[img]
[/img]
一、MainActivity:
二、MyHandler
三、Weather:
四、list_item:
记得添加权限:
运行效果图:
[img]
[/img]
工程结构图:
[img]
[/img]
一、MainActivity:
package com.amaker.flipper; import java.io.IOException; import java.io.InputStream; import java.io.StringReader; import java.net.MalformedURLException; import java.net.URI; import java.net.URL; import java.util.List; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.apache.http.HttpEntity; import org.apache.http.HttpRequest; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import android.app.Activity; import android.app.ListActivity; import android.content.Context; import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends ListActivity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /*setContentView(R.layout.main); String str = getWeatherAsString(); Toast.makeText(getApplicationContext(), str, Toast.LENGTH_LONG).show();*/ setListAdapter(new MyAdpter(MainActivity.this)); } private static class MyAdpter extends BaseAdapter { List<Weather> list; LayoutInflater inflater; public MyAdpter(Context context) { list = readXml(); inflater = LayoutInflater.from(context); } @Override public int getCount() { return list.size(); } @Override public Object getItem(int arg0) { return null; } @Override public long getItemId(int arg0) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; InputStream in = null; Weather w = list.get(position); String icon = w.getIcon(); String iconUrl = "http://www.google.com"+icon; try { URL url = new URL(iconUrl); try { in = url.openStream(); } catch (IOException e) { e.printStackTrace(); } } catch (MalformedURLException e) { e.printStackTrace(); } if (convertView == null) { convertView = inflater.inflate(R.layout.list_item, null); holder = new ViewHolder(); holder.icon = (ImageView) convertView .findViewById(R.id.icon_imageView1); holder.week_tv = (TextView) convertView .findViewById(R.id.week_textView1); holder.condition_tv = (TextView) convertView .findViewById(R.id.condition_textView2); holder.low_tv = (TextView) convertView .findViewById(R.id.low_textView3); holder.high_tv = (TextView) convertView .findViewById(R.id.high_textView4); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.icon.setImageBitmap(BitmapFactory.decodeStream(in)); holder.week_tv.setText(w.getWeek()); holder.condition_tv.setText(w.getCondition()); holder.low_tv.setText(w.getLow()+""); holder.high_tv.setText(w.getHight()+""); return convertView; } static class ViewHolder { ImageView icon; TextView week_tv; TextView condition_tv; TextView low_tv; TextView high_tv; } } static List<Weather> readXml() { SAXParserFactory factory = SAXParserFactory.newInstance(); try { SAXParser parser = factory.newSAXParser(); InputSource is = null; is = new InputSource(new StringReader(getWeatherAsString())); MyHandler dh = new MyHandler(); try { parser.parse(is, dh); return dh.list(); } catch (IOException e) { e.printStackTrace(); } } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } return null; } // 得到天气情况的xml public static String getWeatherAsString() { String strUrl = "http://www.google.com/ig/api?hl=zh-cn&weather=Beijing"; HttpGet getRequest = new HttpGet(strUrl); DefaultHttpClient client = new DefaultHttpClient(); try { HttpResponse response = client.execute(getRequest); if (response.getStatusLine().getStatusCode() == 200) { HttpEntity entity = response.getEntity(); return EntityUtils.toString(entity); } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } }
二、MyHandler
package com.amaker.flipper; import java.util.ArrayList; import java.util.List; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class MyHandler extends DefaultHandler { List<Weather> list; Weather currentWeather; public List<Weather> list(){ return list; } @Override public void startDocument() throws SAXException { super.startDocument(); list = new ArrayList<Weather>(); } @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { super.startElement(uri, localName, qName, attributes); if(qName!=null&&qName.equals("forecast_conditions")){ currentWeather = new Weather(); } if(qName!=null&&qName.equals("day_of_week")){ String week = attributes.getValue("data"); if(currentWeather!=null){ currentWeather.setWeek(week); } } if(qName!=null&&qName.equals("low")){ int low = Integer.parseInt(attributes.getValue("data")); if(currentWeather!=null){ currentWeather.setLow(low); } } if(qName!=null&&qName.equals("high")){ int hight = Integer.parseInt(attributes.getValue("data")); if(currentWeather!=null){ currentWeather.setHight(hight); } } if(qName!=null&&qName.equals("icon")){ String icon = attributes.getValue("data"); if(currentWeather!=null){ currentWeather.setIcon(icon); } } if(qName!=null&&qName.equals("condition")){ String condition = attributes.getValue("data"); if(currentWeather!=null){ currentWeather.setCondition(condition); } } } @Override public void characters(char[] ch, int start, int length) throws SAXException { super.characters(ch, start, length); } @Override public void endElement(String uri, String localName, String qName) throws SAXException { super.endElement(uri, localName, qName); if(qName!=null&&qName.equals("forecast_conditions")){ list.add(currentWeather); } } @Override public void endDocument() throws SAXException { super.endDocument(); } }
三、Weather:
package com.amaker.flipper; public class Weather { private String week; private int low; private int hight; private String icon; private String condition; @Override public String toString() { return "Weather [condition=" + condition + ", hight=" + hight + ", icon=" + icon + ", low=" + low + ", week=" + week + "]"; } public String getWeek() { return week; } public void setWeek(String week) { this.week = week; } public int getLow() { return low; } public void setLow(int low) { this.low = low; } public int getHight() { return hight; } public void setHight(int hight) { this.hight = hight; } public String getIcon() { return icon; } public void setIcon(String icon) { this.icon = icon; } public String getCondition() { return condition; } public void setCondition(String condition) { this.condition = condition; } }
四、list_item:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageView android:layout_height="wrap_content" android:id="@+id/icon_imageView1" android:src="@drawable/icon" android:layout_width="wrap_content" /> <TextView android:text="" android:id="@+id/week_textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:text="" android:id="@+id/condition_textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:text="" android:id="@+id/low_textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:text="" android:id="@+id/high_textView4" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
记得添加权限:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
发表评论
-
Android中如何模拟一次点击(touch)事件
2014-05-06 10:41 0在Android中有时需要模拟某一个View的touch事件, ... -
Android程序Crash时的异常上报
2014-04-28 18:15 0http://blog.csdn.net/singwhatiw ... -
android程序中证书签名校验的方法
2014-04-28 17:58 2015android程序中证书签名校验的方法一 2013-02 ... -
MD5理解错了,哎
2014-03-17 14:14 0MD5只对数据加密是无法解密的,也就是说,你把100加密后,就 ... -
Android 获取网络时间
2014-03-12 11:42 2048Android 获取网络时间 在网上看到的最常见的方式有: ... -
SQLite清空表并将自增列归零
2014-03-05 18:02 1558SQLite清空表并将自增列归零 作者:Zhu Yanfeng ... -
Handler小看一下
2013-11-11 16:42 0android handler调用post方法还是阻塞 su ... -
Frame Animation小看一下
2013-10-12 16:30 815Demo运行效果图: 源码: -
动画小学一下
2013-10-12 16:14 741转自: http://www.eoeandroid.com/f ... -
Android 动画之ScaleAnimation应用详解
2013-10-12 15:49 1026===============eoeAndroid社区推荐:= ... -
android开发中的一个工具类
2013-06-19 16:04 0package com.wanpu.login.dialog; ... -
android TextView怎么设置个别字体颜色并换行?
2013-06-20 09:25 1709(1)、TextView 设置个别字体颜色 TextView ... -
Android开发之文件下载,状态时显示下载进度,点击自动安装
2013-05-07 15:38 1441在进行软件升级时,需要进行文件下载,在这里实现自定义的文件下载 ... -
android中的状态保存
2013-04-07 14:21 986package com.zzl.call; import ... -
android动画基础:tween动画
2013-04-06 11:21 1268工程结构图: [img] [/img] 四个动画的xml ... -
面试中遇到的几个问题
2013-06-09 11:56 1025SAX与DOM之间的区别 SAX ( ... -
Android获取其他包的Context实例,然后调用它的方法,反射!!!
2013-03-25 10:32 1234Android中有Context的概念,想必大家都知道。Con ... -
Android的内存机制和常见泄漏情形
2013-03-06 16:55 800一、 Android的内存机制 Android的程序由Ja ... -
JUnit测试小小demo
2013-03-06 16:37 1187运行效果图: [img] [/img] 项目结构图 ... -
android开发中的异常小工具
2013-03-04 15:53 906package com.zzl.tools; impor ...
相关推荐
本文将深入探讨如何利用Android的XML Pull解析技术来处理天气预报数据,并将其集成到ListView中。 首先,让我们理解XML Pull解析的基本概念。XML Pull解析是一种轻量级的解析方式,它不需要完整的DOM(文档对象模型...
在这个"google天气预报XML-Pull解析版(完全解析)"中,我们将探讨如何利用XML-Pull解析技术来处理从Google天气API获取的数据。 XML-Pull解析是一种轻量级的解析方法,与DOM(Document Object Model)和SAX(Simple...
2. 调用方法:在客户端代码中,实例化WebService的代理类,然后调用GetWeatherForecast方法,获取天气预报数据。 五、安全性与优化 1. 安全性:为了保护WebService不被恶意使用,可以添加身份验证机制,如基本认证...
这个“android项目开发实例-天气预报”旨在帮助开发者掌握如何在Android平台上实现基本的天气信息展示功能。下面将详细介绍这个项目的核心知识点。 1. **Android Studio**:作为Android应用程序的开发环境,Android...
在本案例中,可能是通过HTTP请求(GET或POST)来获取远程服务器上的天气预报数据。 2. **JSON(JavaScript Object Notation)**: JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。...
在文件名为`weathers`的压缩包中,可能包含了多个城市的天气预报数据,每个城市对应一个XML文件。解析这些文件后,我们可以将天气信息组织成适合进一步处理的结构,比如列表或字典,便于在应用程序中显示或存储。 ...
总结来说,“android 天气预报实例”涵盖了Android开发中的多个核心知识点,包括网络通信、数据解析、UI设计、异常处理和定位服务等。通过这个实例的学习,开发者能够提升在实际项目中的综合技能。
在这个例子中,开发者通常会利用Android的Pull解析器来处理XML数据,从而获取并显示天气预报信息。以下是这个主题涵盖的一些关键知识点: 1. **Android网络请求**:首先,你需要了解如何在Android应用中进行网络...
【Android天气预报实例】是一个基于Java编程语言和Android操作系统开发的应用程序示例,它利用了雅虎提供的天气API来获取实时的气象数据。这个实例展示了如何在Android平台上构建一个功能完善的天气应用,其中包括...
在本实例中,WebService作为桥梁,连接了天气预报数据提供者和用户界面。 2. SOAP(Simple Object Access Protocol): SOAP是WebService的核心通信协议,用于在Web上传输数据。它是基于XML的,允许数据以结构化的...
本案例中,我们关注的是如何利用SAX(Simple API for XML)解析器来处理一个与天气预报相关的XML文件,并在用户界面上展示这些信息。 SAX解析器是XML解析的一种事件驱动方法,它不会像DOM(Document Object Model)...
4. **网络请求**:获取天气预报数据通常需要从互联网获取,这涉及到网络编程。Android使用HttpURLConnection或第三方库如OkHttp、Volley进行网络请求。你可能需要了解JSON解析,因为天气API通常返回JSON格式的数据。...
在Android开发中,获取并解析XML数据是一项基本技能,尤其当涉及到从远程服务器获取实时信息时,如天气预报。在这个场景中,我们通常会利用网络请求获取到XML格式的天气数据,然后通过解析器将其转化为应用程序可以...
【天气预报实例】是一个利用雅虎天气API创建的项目,主要展示了如何通过AJAX、jQuery和JSONP技术实现一个三级联动的天气预报功能。这个实例对于初学者来说是一个很好的学习资源,可以帮助他们理解和掌握相关技术。 ...
然而,这个API已在2012年被弃用,现在若要获取天气预报数据,通常需要使用其他第三方服务,如OpenWeatherMap、WeatherStack等。这些服务通常会提供XML或JSON格式的数据供开发者调用。在本项目中,我们假设你已经找到...
8. **UI更新**:在获取到天气预报数据后,我们需要将其展示在Android应用的用户界面上。这通常涉及异步操作,可以使用AsyncTask或其他异步处理机制,以避免阻塞主线程。 9. **权限管理**:在AndroidManifest.xml中...
应用可能接入了如OpenWeatherMap、AccuWeather等第三方天气API,获取当前及未来几天的天气预报数据。调用API时需要考虑错误处理和重试机制。 5. **权限管理**: 因为需要访问网络和位置信息,应用可能需要在...
例如,当应用需要从服务器获取新闻列表、天气预报或其他类型的数据时,这些数据通常以XML格式提供。因此,掌握XML解析技术对于开发者而言至关重要。 #### 解析过程概览 解析XML数据的过程大致可以分为以下几个步骤...
总的来说,"android天气预报Demo实例"涵盖了Android开发中的多个核心技能,包括网络请求、数据解析、UI设计、数据绑定、缓存策略以及权限管理等。通过研究这个项目,开发者可以深入理解Android应用的开发流程,并...