[英]Rss feed layout in Java/Android
我想在Android應用中顯示RSS
Feed。 基本上,它當然是從XML
文件中讀取的。 我想在Android listView
顯示兩個項目: title
, description
。
我希望Feed執行此操作:
title
description
title
description
title
description
title
description
相反它是這樣做的:
title
title
title
title
title
title
description
description
description
description
description
description
我可以看到為什么基於這個代碼是如何,但我無法弄清楚如何布局像例1。
這是代碼:
private class RSSHandler extends DefaultHandler {
public void startElement(String uri, String localName, String qName,
Attributes attrs) throws SAXException {
if (localName.equals("item")) {
item = true;
}
if (localName.equalsIgnoreCase("title")) {
fTitle = true;
}
if (localName.equalsIgnoreCase("description")) {
fDesc = true;
}
}
public void endElement(String namespaceURI, String localName,
String qName) throws SAXException {
}
public void characters(char[] ch, int start, int length)
throws SAXException {
if (fTitle) {
titleResult = titleResult + (new String(ch, start, length))
+ "\t\n\n";
fTitle = false;
}
if (fDesc) {
rssResult = rssResult + (new String(ch, start, length))
+ "\t\n\n";
fDesc = false;
}
}
}
您正在維護兩個字符串並在以后組合它們,您應該在構建它們時將它們組合在一起。 根據你的例子,你應該使用這樣的東西:
public void characters(char[] ch, int start, int length)
throws SAXException {
if (fTitle) {
titleResult = titleResult + (new String(ch, start, length))
+ "\t\n";
fTitle = false;
}
if (fDesc) {
titleResult = titleResult + (new String(ch, start, length))
+ "\t\n\n";
fDesc = false;
}
}
相反,你這樣做:
if (fTitle) {
titleResult = titleResult + (new String(ch, start, length))
+ "\t\n\n";
fTitle = false;
}
if (fDesc) {
rssResult = rssResult + (new String(ch, start, length))
+ "\t\n\n";
fDesc = false;
}
看你正在創作兩個字符串,其中包含很多標題和其他很多描述。
嘗試創建List<String>
並在那里添加你的對象:
List<String> feeds = new ArrayList<String>();
...
public void characters(char[] ch, int start, int length)
throws SAXException {
String feed = new String("");
if (fTitle) {
feed = new String(ch, start, length)
+ "\t\n\n";
fTitle = false;
}
if (fDesc) {
feed = feed + (new String(ch, start, length))
+ "\t\n\n";
fDesc = false;
}
feeds.add(feed);
}
然后你可以使用打印來顯示你的清單:
for(String feed : feeds) {
<Use your string>
feed.doSometing();
}
但最好的做法是你制作一個Feed對象來存儲標題和描述,例如:
List<Feed> feeds = new ArrayList<Feed>();
Feed feed = new Feed(title, description);
feeds.add(feed);
for(Feed feed : feeds) {
feed.getTitle().doSometing();
feed.getDescription().doSometing();
}
=)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.