- 浏览: 365826 次
- 性别:
- 来自: 福州
文章分类
最新评论
-
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 755http://subclipse.tigris.org/up ... -
ubuntu13下载android源码
2014-02-27 18:23 634一、注意repo的正确地址 repo:curl " ... -
用例无法运行,报如下错:Exception during suite construction
2014-02-26 15:47 1264一 前提 1、 测试工程中的所有参数已配置好,如ins ... -
dx.jar dx.bat
2013-06-17 19:33 2255Android SDK中dx.jar, dx.bat文件的备份 ... -
Please ensure that adb is correctly located..... 问题
2013-04-16 09:44 964解决方法: 方法一、查毒杀毒,也许了病毒占用了adb ... -
PC端通过adb与设备端通信
2013-03-28 09:36 1510adb 全称Android Debug Bri ... -
Unable to execute dex: Multiple dex files define Lorg/taptwo/android/widget/Circ
2013-02-21 15:07 2575问题:[2013-02-21 15:01:02 - Dex ... -
android viewTree and decorView
2013-01-30 13:55 1694Android ViewTree and DecorView ... -
No active compatible AVD's or devices found. Relaunch this configuration after c
2013-01-29 10:56 8759问题:No active compatible AVD's ... -
代码对比工具
2013-01-24 15:33 646windows: http://www.scooterso ... -
android最新源码下载
2013-01-23 09:57 1048源码下载:https://source.android.co ... -
Run MonkeyTalk Scripts via Ant in Windows
2012-12-18 20:24 1277Run MonkeyTalk Scripts via ... -
Android中cpu,memory,Battery的计算
2012-11-20 19:59 66101 Memory的分配(RAM而非ROM) 网址: •ht ... -
http://code.taobao.org/p/TMTS/src/
2012-10-12 17:38 1029http://code.taobao.org/p/TMTS/s ... -
string.xml文件中的特殊符号转换符
2012-09-24 09:09 777strings.xml文件中需要对特殊符号(如%,'等)进行转 ... -
web server 中设置wifi代理
2012-09-24 09:07 893DefaultHttpClient httpClient = ... -
Android开发一些常见问题
2012-09-24 09:06 7411:当追踪问题时,代码中实在找不出问题所以,代码的逻辑完全正确 ... -
将log信息写入sdcard
2012-07-05 17:14 869File mFile; private void write ... -
string.xml文件中的特殊符号转换符
2012-06-19 19:39 1050strings.xml文件中需要对特殊符号(如%,'等)进行转 ... -
关于popupWindow的dismiss
2012-06-17 16:13 8586View contentView = LayoutInflat ...
相关推荐
【安卓Android源码——RssReader.zip】是一个包含...综上所述,学习和分析这个RssReader源码可以深入理解Android应用程序的网络通信、数据解析、UI设计以及数据存储等多个核心概念,对于提升Android开发技能非常有益。
1. **XML解析**:由于RSS数据是XML格式,所以需要一个XML解析器来读取和理解数据结构。J2ME提供了一个轻量级的XML解析库,叫做KXML,适用于资源有限的设备。 2. **网络通信**:使用J2ME的`javax.microedition.io....
标题中的"rss(JAVA).zip_ rss_RSS_RSS Reader_RSS java downlo_java rss"揭示了这个压缩包是一个使用Java语言开发的RSS阅读器项目。RSS(Really Simple Syndication)是一种数据格式,用于发布新闻、博客和其他定期...
### Java 解析 RSS 具体信息 #### 一、RSS 概述 RSS(Really Simple Syndication)是一种用于共享新闻和其他 Web 内容的数据格式。RSS 文件(也称为 RSS Feed 或 XML Feed)允许用户订阅网站上的最新更新。通过 ...
总的来说,"RSSReader-网易手机在线更新阅读"项目展示了Java编程语言在移动应用开发中的实际应用,涵盖了网络通信、XML解析、数据库操作、用户界面设计等多个核心领域,对于学习Android和Java开发的程序员来说,是一...
Java实现的RSS阅读器是一个基于Java编程语言的软件应用,主要功能是解析并展示RSS(Really Simple Syndication)源中的内容。RSS是一种XML格式,用于发布新闻、博客和其他定期更新的网络内容。RSS阅读器可以帮助用户...
例如,`RssReader`类用于读取RSS源,` SyndFeed`类代表一个聚合,包含各种频道信息和条目。通过这个库,开发者可以轻松地获取RSS馈送中的标题、描述、链接等信息。 2. **jdom-1.0.jar**: JDOM是一个用于处理XML文档...
【RSSReader的代码】是一个基于Java Swing开发的个人RSS阅读器项目,主要用于实现RSS订阅、离线阅读以及后台同步更新等功能。在这个项目中,开发者利用Java的Swing库构建了一个用户友好的图形用户界面(GUI),使...
标题中的“RSS reader for hacksnews”表明这是一个专为获取HackerNews网站内容设计的RSS阅读器。RSS(Really Simple Syndication)是一种订阅源格式,它允许用户通过新闻聚合器获取网站更新,而无需直接访问每个...
例如,通过调用`RSSReader`类的`parse`方法,可以解析一个RSS源,并将其转换为一个`RSSChannel`对象,然后可以通过遍历`RSSChannel`中的`Item`集合,获取每一条RSS条目的详细信息,如标题、链接、发布日期等。...
您可以通过简单地调用RssReader.read(URL url)来使用 API。 这将向提供的 url 发出请求并将其解析为RssFeed和RssItem对象。 没有比这更容易的了。 以下是如何获取 RSS 提要并遍历每个项目的示例: URL url = new ...
总结来说,J2ME平台的RSSReader是一个综合运用了网络通信、XML解析、数据存储、用户界面设计以及多线程和错误处理技术的典型示例。它展示了如何在资源有限的环境中构建功能丰富的移动应用。通过深入理解这些技术,...
2. XML解析库:在Android中,我们通常使用Java内置的DOM或SAX解析器,或者第三方库如`jsoup`来解析RSS feed。这个项目可能使用了其中的一种,通过解析`rssfeed.txt`文件获取数据。 三、网络请求与数据加载 1. HTTP...
RSS阅读器 该项目实现了一个简单的单线程处理器,该处理器具有: 输入源 转换操作列表(可选) 输出源(可选) 处理器将: 将源解析为具有Title和...例如: java -jar RssReader.jar -i test.txt --convert="cut
本项目“struts2+spring2+hibernate3 RSSREADER”是一个基于SSH框架的在线RSS阅读器,它允许用户订阅并查看RSS feed,以便于集成到自己的系统中提供RSS服务。 **Struts2** 是一个用于构建企业级Web应用程序的MVC...
RSSReader的核心功能就是解析和显示这些RSS源,帮助用户高效管理订阅的新闻、博客和播客等内容。 作为开源软件,RSSReader的源代码遵循GPL(GNU General Public License)许可协议发布。GPL是一种自由软件许可证,...
1. **RSS解析**:应用通过网络请求获取RSS源的XML数据,然后使用如Java内置的DOM或第三方库如jsoup解析XML,提取出标题、摘要、链接等信息。 2. **Feed模型**:将解析得到的数据封装成自定义的Feed对象,便于数据...
3. XML解析:RSS数据是以XML格式传输的,因此RSSReader需要使用XML解析库,如JDOM、DOM4J或Java内置的SAX和DOM解析器来解析和处理RSS feed。 4. URL和HTTP通信:Java的java.net包提供了URL和URLConnection类,用于...
只是 SAX 的 DefaultHandler 的基本实现,用于解析 RSS 2 提要。 不依赖于任何外部库,它只使用 SAX(自 Java 5 起包含在 JavaSE 中,也在 Android 上)。 使用示例 ArrayListRSSFeedStore feedStore = new ...
2. **rssReader.bat 和 rssReader.sh**:这两个文件分别是 Windows 和 Linux 系统下的启动脚本,它们用于运行 RSS Viewer 应用程序。rssReader.bat 是批处理文件,适用于 Windows 环境,而 rssReader.sh 是 Bash ...