【问题标题】:How to show Dom parser result in android list view如何在 android 列表视图中显示 Dom 解析器结果
【发布时间】:2011-02-06 20:49:12
【问题描述】:

我想知道如何将以下代码的结果实现到android listview中。

提前致谢

package com.androidpeople.xml.parsing;

import java.net.URL;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;

import android.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.TextView;

public class XMLParsingDOMExample extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        /** Create a new layout to display the view */
        LinearLayout layout = new LinearLayout(this);
        layout.setOrientation(1);

        /** Create a new textview array to display the results */
        TextView name[];
        TextView website[];
        TextView category[];

        try {

            URL url = new URL(
                    "http://www.............com//example.xml");
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            DocumentBuilder db = dbf.newDocumentBuilder();
            Document doc = db.parse(new InputSource(url.openStream()));
            doc.getDocumentElement().normalize();

            NodeList nodeList = doc.getElementsByTagName("item");

            /** Assign textview array lenght by arraylist size */
            name = new TextView[nodeList.getLength()];
            website = new TextView[nodeList.getLength()];
            category = new TextView[nodeList.getLength()];

            for (int i = 0; i < nodeList.getLength(); i++) {

                Node node = nodeList.item(i);

                name[i] = new TextView(this);
                website[i] = new TextView(this);
                category[i] = new TextView(this);

                Element fstElmnt = (Element) node;
                NodeList nameList = fstElmnt.getElementsByTagName("name");
                Element nameElement = (Element) nameList.item(0);
                nameList = nameElement.getChildNodes();
                name[i].setText("Name = "
                        + ((Node) nameList.item(0)).getNodeValue());

                NodeList websiteList = fstElmnt.getElementsByTagName("website");
                Element websiteElement = (Element) websiteList.item(0);
                websiteList = websiteElement.getChildNodes();
                website[i].setText("Website = "
                        + ((Node) websiteList.item(0)).getNodeValue());

                category[i].setText("Website Category = "
                        + websiteElement.getAttribute("category"));

                layout.addView(name[i]);
                layout.addView(website[i]);
                layout.addView(category[i]);

            }
        } catch (Exception e) {
            System.out.println("XML Pasing Excpetion = " + e);
        }

        /** Set the layout view to display */
        setContentView(layout);

    }
}

【问题讨论】:

  • erm.. 你想在列表视图中放什么?从 DOM 中读取的每个元素的名称、网站和类别的行?您需要更清楚地指定您想要做什么。
  • 你绝对应该把网络代码从onCreate()移到后台线程中。
  • 您好,您可以发布您的代码以将输出显示为列表视图吗?

标签: android dom sax


【解决方案1】:

请指导我如何将此代码放入 android listview

创建一个BaseAdapter 的子类,该子类环绕已解析的DOM,并根据getView() 的请求返回行。这与将ArrayAdapter 用于ArrayListCursorAdapter 用于Cursor 没有显着不同,只是您必须自己完成更多工作,因为Android 中没有DOMAdapter

【讨论】:

  • 感谢您的建议。如果我能以这种方式实现,请让 c。再次感谢
  • 嗨 Kread 它可以是任何元素,如 name 。忽略其他元素,实际上我发现在使用 Dom 时从服务器读取 xml 文件非常有效。现在正在制作包含有关用户上下文信息的网站。所以我必须在 android 上显示该视图,所以我很困惑如何在列表视图中显示 Dom 信息,如果它也包含图片信息。感谢您的关心
猜你喜欢
  • 2016-08-03
  • 2021-02-21
  • 2014-06-05
  • 1970-01-01
  • 1970-01-01
  • 2016-03-02
  • 2017-03-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多