0

RSSAndroidアプリにフィードを表示したい。もちろん、XMLファイルからの読み取りです。Androidに表示したいアイテムが2つありますlistViewtitledescription

フィードにこれを実行させたい:

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;
        }

    }

}
4

2 に答える 2

1

代わりに、次のようにします。

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;
    }

1 つは多くのタイトルを持ち、もう 1 つは多くの説明を含む 2 つの文字列を構成しているように見えます。

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();
}

ただし、次のように、タイトルと説明を格納するフィード オブジェクトを作成することをお勧めします。

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();
}

=)

于 2012-11-16T19:40:31.840 に答える
1

2 つの文字列を維持し、後でそれらを結合する場合は、それらを構築するときに結合する必要があります。あなたの例によれば、次のようなものを使用する必要があります。

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;
    }
}
于 2012-11-16T19:32:36.337 に答える