我无法显示图片网址

时间:2014-01-02 08:06:18

标签: android android-layout android-intent imageview android-parser

我想使用Dom Parser解析特定的xml文件。我在我的应用程序中使用xml解析器。如何为图像使用xml解析器?

new Thread(new Runnable() {
    @Override
    public void run() {
    try {
        URL url = new URL("http://........");
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document doc = db.parse(new InputSource(url.openStream()));
        doc.getDocumentElement().normalize();

        final NodeList nodeList = doc.getElementsByTagName("Article");

        /** Assign textview array lenght by arraylist size */

        nasional.this.runOnUiThread(new Runnable() {
            public void run() {
                for (int i = 0; i < nodeList.getLength(); i++)
                {
                    Node node = nodeList.item(i);
                    Element fstElmnt = (Element) node;

                    nameList = fstElmnt.getElementsByTagName("Headline");
                    Element nameElement = (Element) nameList.item(0);
                    nameList = nameElement.getChildNodes();

                    datelist = fstElmnt.getElementsByTagName("ArticleDate");
                    Element dateElement = (Element) datelist.item(0);
                    datelist = dateElement.getChildNodes();

                    imglist = fstElmnt.getElementsByTagName("ImageURL");
                    Element imgElement = (Element) imglist.item(0);
                    imglist = imgElement.getChildNodes();

                    View root   = inflater.inflate(R.layout.list_item, null);

                    TextView title = (TextView) root.findViewById(R.id.title);
                    title.setText(((Node) nameList.item(0)).getNodeValue());

                    TextView date = (TextView) root.findViewById(R.id.date);
                    date.setText(((Node) datelist.item(0)).getNodeValue());


                    ImageView image = (ImageView) root.findViewById(R.id.list_image);
                    image(((Node) imglist.item(0)).getNodeValue());

                    list.addView(root);
                }
            }               
        });

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

1 个答案:

答案 0 :(得分:0)

目前尚不清楚你的问题究竟是什么,但我怀疑你的线程在调用UI元素时崩溃了。您只能从UI线程修改UI。有多种方法可以做到这一点,但请记住您希望何时以及如何解析XML。

如果要解析一次并将结果保留在内存中,则应考虑使用:

  • 加载程序,其结果通过onLoaderFinished()
  • 传递
  • 服务,其结果通过BroadcastReceiver中的Intent传递

如果您不介意每次轮换设备或重新创建活动时重新分析XML,您可以考虑使用:

  • AsyncTask,其结果通过onPostExecute()
  • 传递
  • 一个线程,其结果通过处理程序传递