listview-Android下载解析xml文件ListView中数据无法更新,要添加一个线程应该可以。求帮助

问题描述

Android下载解析xml文件ListView中数据无法更新,要添加一个线程应该可以。求帮助

我用的Android4.1的手机和Android4.2的模拟器,项目可以正常运行,没有报错,就是下载xml文件解析的数据无法正常显示到Listview中。之前用了个Thread()的可以下载解析xml,不用Thread()的话,就无法下载解析XML中数据,但是在Listview中使用Thread()又要报错了。
@Override
public boolean onOptionsItemSelected(MenuItem item) {

    if (item.getItemId() == UPDATE) {
        //用户点击了 更新列表 按钮
        //new Thread(){
            //public void run(){
                updateListView();
            //}
        //}.start();
    }
    else if (item.getItemId() == ABOUT) {
        //用户点击了 关于 按钮
    }
    return super.onOptionsItemSelected(item);
}

private SimpleAdapter buildSimpleAdapter(List<Mp3Info> mp3Infos) {
    // 生成一个List对象,并按照SimpleAdapter的标准,将mp3Infos当中的数据添加到List当中去
    List<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
    for (Iterator iterator = mp3Infos.iterator(); iterator.hasNext();) {
        Mp3Info mp3Info = (Mp3Info) iterator.next();
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("mp3_name", mp3Info.getMp3Name());
        map.put("mp3_size", mp3Info.getMp3Size());
        list.add(map);
    }
    // 创建一个SimpleAdapter对象
    SimpleAdapter simpleAdapter = new SimpleAdapter(this, list,
            R.layout.mp3info_item, new String[] { "mp3_name", "mp3_size" },
            new int[] { R.id.mp3_name, R.id.mp3_size });
    // 将这个SimpleAdapter对象设置到ListActivity当中
    return simpleAdapter;
}

private void updateListView() {

    // 用户点击了更新列表按钮
    // 下载包含所有Mp3基本信息的xml文件
    String xml = downloadXML("http://59.69.26.186:8080/mp3/resources.xml");
    // 对xml文件进行解析,并将解析的结果放置到Mp3Info对象当中,最后将这些Mp3Info对象放置到List当中
    mp3Infos = parse(xml);
    SimpleAdapter simpleAdapter = buildSimpleAdapter(mp3Infos);
    setListAdapter(simpleAdapter);

}

private String downloadXML(String urlStr){
    HttpDownloader httpDownloader = new HttpDownloader();
    String result = httpDownloader.download(urlStr);
    return result;
}

private List<Mp3Info> parse(String xmlStr){
    SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
    List<Mp3Info> infos = new ArrayList<Mp3Info>();
    try {
        XMLReader xmlReader = saxParserFactory.newSAXParser().getXMLReader();
        Mp3ListContentHandler mp3ListContentHandler = new Mp3ListContentHandler(infos);
        xmlReader.setContentHandler(mp3ListContentHandler);
        xmlReader.parse(new InputSource(new StringReader(xmlStr)));
        for (Iterator iterator = infos.iterator(); iterator.hasNext();) {
            Mp3Info mp3Info = (Mp3Info) iterator.next();
            System.out.println(mp3Info);
        }
    } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
    }
    return infos;
}

}

时间: 2024-11-01 19:39:37

listview-Android下载解析xml文件ListView中数据无法更新,要添加一个线程应该可以。求帮助的相关文章

Android编程解析XML文件的方法详解【基于XmlPullParser】

本文实例讲述了Android编程解析XML文件的方法.分享给大家供大家参考,具体如下: 前言 在学习Android的Framework层源码时,Android大量的使用XmlPullParser来解析xml文件的源码.因此,这里也顺道介绍一下XmlPullParser的使用. XML XML(eXtensible Markup Language)中文名为可扩展标记语言.标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等. 用途 XML设计用了传送及携带数据信息,

详解Android之解析XML文件三种方式(DOM,PULL,SAX)

1.xml文件代码 <?xml version="1.0" encoding="UTF-8" ?> <%@ page language="java" contentType="text/xml; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core

医疗-android上解析dicom文件

问题描述 android上解析dicom文件 android上解析dicom文件的问题, 我们做的是一个医疗项目,有一个观片功能,需要解析dicom,并显示详细信息,还要可测量等.我搞了两天没一点思路,以前从没接触过这方面. 谁知道啊?急求! (新人,没有c币 实在不好意思!) 解决方案 android解析plist文件 解决方案二: discom 是什么 解析??? 解析文件?? 解决方案三: break; 11 case "0002,0013"://文件生成程序的标题 12 ret

slimxml c++-使用slimXml解析xml文件

问题描述 使用slimXml解析xml文件 c++ 中slimXml解析xml文件ELEMENT == pChild->getType()的含义? 我在看别人代码的时候,看到这样几句,不知道使用getType有什么意义, NodeIterator iter; pChild = pNode->getFirstChild(iter); while(pChild) { if(ELEMENT == pChild->getType()) { //得到各个相关字符串信息 ... } pChild =

在Android系统中解析XML文件的方法_java

前言    在学习Android的Framework层源码时,Android大量的使用XmlPullParser来解析xml文件的源码.因此,这里也顺道介绍一下XmlPullParser的使用. XML    XML(eXtensible Markup Language)中文名为可扩展标记语言.标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等.用途    XML设计用了传送及携带数据信息,不用了表现或展示数据,HTML语言则用了表现数据,所以XML用途的焦点是

Android中使用sax解析xml文件的方法_Android

SAX是一个解析速度快并且占用内存少的xml解析器,非常适合用于Android等移动设备. SAX解析XML文件采用的是事件驱动,也就是说,它并不需要解析完整个文档,在按内容顺序解析文档的过程中,SAX会判断当前读到的字符是否合法XML 语法中的某部分,如果符合就会触发事件.所谓事件,其实就是一些回调(callback)方法,这些方法(事件)定义在ContentHandler接口.下面是一些ContentHandler接口常用的方法: startDocument():当遇到文档的开头的时候,调用

详解android使用SAX解析XML文件_Android

解析XML的方式有很多种,大家比较熟悉的可能就是DOM解析. DOM(文件对象模型)解析:解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以根据DOM接口来操作这个树结构了. 优点:整个文档读入内存,方便操作:支持修改.删除和重现排列等多种功能. 缺点:将整个文档读入内存中,保留了过多的不需要的节点,浪费内存和空间. 使用场合:一旦读入文档,还需要多次对文档进行操作,并且在硬件资源充足的情况下(内存,CPU). 为了解决DOM解析存在的问题,就出现了SAX解析.其特点为: 优点:不

android编程之XML文件解析方法详解(附源码)_Android

本文实例讲述了android编程之XML文件解析方法.分享给大家供大家参考,具体如下: 在android开发中,经常用到去解析xml文件,常见的解析xml的方式有一下三种:SAX.Pull.Dom解析方式.最近做了一个android版的CSDN阅读器,用到了其中的两种(sax,pull),今天对android解析xml的这三种方式进行一次总结. 今天解析的xml示例(channels.xml)如下: <?xml version="1.0" encoding="utf-8

android编程之XML文件解析方法详解(附源码)

本文实例讲述了android编程之XML文件解析方法.分享给大家供大家参考,具体如下: 在android开发中,经常用到去解析xml文件,常见的解析xml的方式有一下三种:SAX.Pull.Dom解析方式.最近做了一个android版的CSDN阅读器,用到了其中的两种(sax,pull),今天对android解析xml的这三种方式进行一次总结. 今天解析的xml示例(channels.xml)如下: <?xml version="1.0" encoding="utf-8