簡體   English   中英

Java / Android中的Rss Feed布局

[英]Rss feed layout in Java/Android

我想在Android應用中顯示RSS Feed。 基本上,它當然是從XML文件中讀取的。 我想在Android listView顯示兩個項目: titledescription

我希望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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM