- 浏览: 360321 次
- 性别:
- 来自: 福州
文章分类
最新评论
-
loveskey:
找了好久,可算是找到了。感谢
dx.jar dx.bat -
zhaoyi168:
可以把工程的代码发给我吗?
ZJLN1982@yahoo.co ...
Athrun Demo -
ergodic09:
請問樓主 我目前在porting AR6003但是無法自己產生 ...
009-Android平台开发-WIFI function porting-WIFI功能移植 -
iedj99fei:
...
androi中xliff:g
RssReader.java解析:
1 触发download的click事件,调用doRSS(Url)方法。
2 在doRss(Url)中通过rssUrl构造RSSWorker线程实例。
3 在RSSWorker中处理从网络上下载xml的动作。并调用parseRSS(in, mAdapter)方法解析xml文件。
4 在parseRSS()方法中,在解析一个item后,通过mHandler.post(new ItemAdder(item))方法将解析
后的单个item发送到mAdapter中,ItemAdder是一个线程,即将new ItemAdder(item)产生后的实例
post到mHandler的消息队列中。通过消息队列循环的将item加入到mAdapter中。
总结:启动一个线程处理下载xml数据的动作,并解析下载xml数据。在这个现在里通过handler发送一个Message,以便更新数据。
而Handler发送Message时采用post(Runnable r)的方式,在Runnable中处理为adapter增加数据的动作,以便adapter中
的item及时更新UI显示。
方法附录:
1
private void doRSS(CharSequence rssUrl) {
RSSWorker worker = new RSSWorker(rssUrl);
setCurrentWorker(worker);
resetUI();
mStatusText.setText("Downloading\u2026");
worker.start();
}
先调用setCurrentWorker(worker)设置当前的worker,然后调用resetUI。在resetUI中利用mAdapter适配ListView。以达到更新UI的效果。
2
public synchronized void setCurrentWorker(RSSWorker worker) {
if (mWorker != null) mWorker.interrupt();
mWorker = worker;
}
这个方法实现的功能是:中断一个线程(RSSWorker构造的),设置新的线程。
3
void parseRSS(InputStream in, RSSListAdapter adapter) throws IOException,
XmlPullParserException {
XmlPullParser xpp = Xml.newPullParser();
xpp.setInput(in, null); // null = default to UTF-8
int eventType;
String title = "";
String link = "";
String description = "";
eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG) {
String tag = xpp.getName();
if (tag.equals("item")) {
title = link = description = "";
} else if (tag.equals("title")) {
xpp.next(); // Skip to next element -- assume text is directly inside the tag
title = xpp.getText();
} else if (tag.equals("link")) {
xpp.next();
link = xpp.getText();
} else if (tag.equals("description")) {
xpp.next();
description = xpp.getText();
}
} else if (eventType == XmlPullParser.END_TAG) {
// We have a comlete item -- post it back to the UI
// using the mHandler (necessary because we are not
// running on the UI thread).
String tag = xpp.getName();
if (tag.equals("item")) {
RssItem item = new RssItem(title, link, description);
mHandler.post(new ItemAdder(item));
}
}
eventType = xpp.next();
}
}
该方法是通过pull的方式解析xml文件,效率更高。
1 触发download的click事件,调用doRSS(Url)方法。
2 在doRss(Url)中通过rssUrl构造RSSWorker线程实例。
3 在RSSWorker中处理从网络上下载xml的动作。并调用parseRSS(in, mAdapter)方法解析xml文件。
4 在parseRSS()方法中,在解析一个item后,通过mHandler.post(new ItemAdder(item))方法将解析
后的单个item发送到mAdapter中,ItemAdder是一个线程,即将new ItemAdder(item)产生后的实例
post到mHandler的消息队列中。通过消息队列循环的将item加入到mAdapter中。
总结:启动一个线程处理下载xml数据的动作,并解析下载xml数据。在这个现在里通过handler发送一个Message,以便更新数据。
而Handler发送Message时采用post(Runnable r)的方式,在Runnable中处理为adapter增加数据的动作,以便adapter中
的item及时更新UI显示。
方法附录:
1
private void doRSS(CharSequence rssUrl) {
RSSWorker worker = new RSSWorker(rssUrl);
setCurrentWorker(worker);
resetUI();
mStatusText.setText("Downloading\u2026");
worker.start();
}
先调用setCurrentWorker(worker)设置当前的worker,然后调用resetUI。在resetUI中利用mAdapter适配ListView。以达到更新UI的效果。
2
public synchronized void setCurrentWorker(RSSWorker worker) {
if (mWorker != null) mWorker.interrupt();
mWorker = worker;
}
这个方法实现的功能是:中断一个线程(RSSWorker构造的),设置新的线程。
3
void parseRSS(InputStream in, RSSListAdapter adapter) throws IOException,
XmlPullParserException {
XmlPullParser xpp = Xml.newPullParser();
xpp.setInput(in, null); // null = default to UTF-8
int eventType;
String title = "";
String link = "";
String description = "";
eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG) {
String tag = xpp.getName();
if (tag.equals("item")) {
title = link = description = "";
} else if (tag.equals("title")) {
xpp.next(); // Skip to next element -- assume text is directly inside the tag
title = xpp.getText();
} else if (tag.equals("link")) {
xpp.next();
link = xpp.getText();
} else if (tag.equals("description")) {
xpp.next();
description = xpp.getText();
}
} else if (eventType == XmlPullParser.END_TAG) {
// We have a comlete item -- post it back to the UI
// using the mHandler (necessary because we are not
// running on the UI thread).
String tag = xpp.getName();
if (tag.equals("item")) {
RssItem item = new RssItem(title, link, description);
mHandler.post(new ItemAdder(item));
}
}
eventType = xpp.next();
}
}
该方法是通过pull的方式解析xml文件,效率更高。
发表评论
-
eclipse中安装插件地址
2014-03-07 15:08 730http://subclipse.tigris.org/up ... -
ubuntu13下载android源码
2014-02-27 18:23 605一、注意repo的正确地址 repo:curl " ... -
用例无法运行,报如下错:Exception during suite construction
2014-02-26 15:47 1204一 前提 1、 测试工程中的所有参数已配置好,如ins ... -
dx.jar dx.bat
2013-06-17 19:33 2198Android SDK中dx.jar, dx.bat文件的备份 ... -
Please ensure that adb is correctly located..... 问题
2013-04-16 09:44 938解决方法: 方法一、查毒杀毒,也许了病毒占用了adb ... -
PC端通过adb与设备端通信
2013-03-28 09:36 1466adb 全称Android Debug Bri ... -
Unable to execute dex: Multiple dex files define Lorg/taptwo/android/widget/Circ
2013-02-21 15:07 2549问题:[2013-02-21 15:01:02 - Dex ... -
android viewTree and decorView
2013-01-30 13:55 1674Android ViewTree and DecorView ... -
No active compatible AVD's or devices found. Relaunch this configuration after c
2013-01-29 10:56 8734问题:No active compatible AVD's ... -
代码对比工具
2013-01-24 15:33 617windows: http://www.scooterso ... -
android最新源码下载
2013-01-23 09:57 1026源码下载:https://source.android.co ... -
Run MonkeyTalk Scripts via Ant in Windows
2012-12-18 20:24 1241Run MonkeyTalk Scripts via ... -
Android中cpu,memory,Battery的计算
2012-11-20 19:59 65781 Memory的分配(RAM而非ROM) 网址: •ht ... -
http://code.taobao.org/p/TMTS/src/
2012-10-12 17:38 1005http://code.taobao.org/p/TMTS/s ... -
string.xml文件中的特殊符号转换符
2012-09-24 09:09 743strings.xml文件中需要对特殊符号(如%,'等)进行转 ... -
web server 中设置wifi代理
2012-09-24 09:07 871DefaultHttpClient httpClient = ... -
Android开发一些常见问题
2012-09-24 09:06 7211:当追踪问题时,代码中实在找不出问题所以,代码的逻辑完全正确 ... -
将log信息写入sdcard
2012-07-05 17:14 842File mFile; private void write ... -
string.xml文件中的特殊符号转换符
2012-06-19 19:39 1001strings.xml文件中需要对特殊符号(如%,'等)进行转 ... -
关于popupWindow的dismiss
2012-06-17 16:13 8547View contentView = LayoutInflat ...
相关推荐
小程序源码 RssReader.rar
安卓Android源码——RssReader.zip
开源项目-sohlich-go-rssreader.zip,刚刚创建了简单的命令行RSS阅读器来学习Go基础知识
一个较为完美的RSSReader,加入了数据库。有详细的设计报告和帮助文档。
android 源码学习.资料部分来源于合法的互联网渠道收集和整理,供大家学习参考与交流。本人不对所涉及的版权问题或内容负法律责任。如有侵权,请通知本人删除。感谢CSDN官方提供大家交流的平台
linux 平台 RSS reader ,一个linux平台下的 rss 阅览器,充分使用了 STL 等技术,并且使用了 sqlite 。可以用来学习
由Jonathan Knudsen开发的移动电话RSS阅读器.
电脑软件RSS阅读Fluent.Reader.Setup.1.0.1.x64
Atom-rssreader.zip,RSS阅读器是用Java流API从RSS和Atom提要中提取数据的一个简单的Java库阅读器,atom是一个用web技术构建的开源文本编辑器。
Atom-Rss-Reader.zip,示例rssreader ios应用程序,atom是一个用web技术构建的开源文本编辑器。
android RssReader源码.rar
* 文件名:RssUtils.java 网站RSS生成 * 版本信息:V1.0 * 日期:2013-06-18 * Copyright BDVCD Corporation 2013 * 版权所有 http://www.bdvcd.com */ public class RssUtils { public static String ...
介绍了如何解析rss的方法 附加例子,可直接使用
This sample shows you how to create a basic RSS reader that downloads the Windows Phone team blog RSS feed, and then displays the feed items in a ListBox. Although the sample is set up to download a ...
用java写的RSS阅读器,支持基本功能。支持RSS协议,有一个简单的界面。
基于java的开发源码-XML写的RSS阅读器.zip 基于java的开发源码-XML写的RSS阅读器.zip 基于java的开发源码-XML写的RSS阅读器.zip 基于java的开发源码-XML写的RSS阅读器.zip 基于java的开发源码-XML写的RSS阅读器.zip ...
Java+XML写的RSS阅读器.rar Java+XML日程提醒系统.rar Java24点游戏逼真图形版代码.rar JavaScript万年历.rar Java二进制IO类与文件复制操作实例.rar Java从压缩包中提取文件.rar Java从网络取得文件.rar Java仓库...
RssReader项目设计手册,以及相关PPT
RSSReader和Awasu、FeedDemon一样,也是一个单机版新闻阅读器。一旦下载完毕,这款免费的RSSReader安装所花时间不到1分钟。但和NewsGator相同的是,RSSReader也需要另外安装Microsoft .Net Framework 1.1
一款简单实用的在线Rss阅读软件。 简单。速度快。 及时搜索 根据阅读历史,对所有未读的文章进行个性化排序 Google OpenID登录, 支持导入Google Reader的订阅列表。解决Google Reader在...