listview-大四安卓学习mars播放器Listview的问题

问题描述

大四安卓学习mars播放器Listview的问题

抱歉麻烦各位了,本人大四狗,目前在看安卓开发,学习mars老师的音乐播放器时遇到了
个问题,就是设置了SimpleAdapter之后仍然无法显示歌名的内容,只显示了个空白的
TEXTVIEW,我研究了无数次依旧没有发现问题在哪,因此来求教各位大神
附上全部代码,没有错误信息,就是显示不出来,每一步调试过确定都有值
代码如下

 package com.example.android_mp3;

import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;

import com.download.HttpDownloader;
import com.model.Mp3Info;
import com.xml.Mp3ListContentHandler;

import android.app.ListActivity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleAdapter;

public class MainActivity extends ListActivity {

    private static final int UPDATE = 1;
    private static final int ABOUT = 2;
    private List<Mp3Info> mp3Infos = null;

    /*
     * 用户点击menu按钮后调用,可加入自己的按钮控件
     */
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // TODO 自动生成的方法存根
        // 组id,物品id,排序,显示内容
        menu.add(0, UPDATE, 1, R.string.mp3list_update);
        menu.addSubMenu(0, ABOUT, 2, R.string.mp3list_about);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        new Thread(r).start();
        // updateListView();
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        if (item.getItemId() == UPDATE) {

        }

        else if (item.getItemId() == ABOUT) {
            System.out.println("1");
            // updateListView();

        }
        return super.onOptionsItemSelected(item);
    }

    // public void updateListView() {
    // new Thread(new Runnable() {
    //
    // @Override
    // public void run() {
    // // TODO 自动生成的方法存根
    // String xml = downloadXML("http://192.168.88.100:8080/mp3/resources.xml");
    // System.out.println("XML------>");
    // System.out.println(xml);
    // System.out.println(Thread.currentThread().getName());
    // mp3Infos = parse(xml);
    // Message msg = Message.obtain();
    // msg.sendToTarget();
    // }
    // }) .start();
    // 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 adapter = new SimpleAdapter(this, list,
    // R.layout.mp3info_xml, new String[] { "mp3_name", "mp3_size" },
    // new int[] { R.id.mp3_name, R.id.mp3_size });
    // setListAdapter(adapter);

    // }

    private Handler handler = new Handler() {

        public void handleMessage(Message msg) {
            // 显示列表
            showList();
        }
    };
    Runnable r = new Runnable() {
        public void run() {
            String xml = downloadXML("http://192.168.88.100:8080/mp3/resources.xml");
            System.out.println("XML------>");
            System.out.println(xml);
            // 解析下载的XML文件
            mp3Infos = parse(xml);
            Message msg = handler.obtainMessage();
            msg.sendToTarget();
        }
    };

    public void showList() {
        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 = new SimpleAdapter(MainActivity.this,
                list, R.layout.mp3info_xml,
                new String[] { "mp3Name", "mp3Size" }, new int[] {
                        R.id.mp3_name, R.id.mp3_size });
        setListAdapter(simpleAdapter);
    }

    private String downloadXML(String urlString) {

        HttpDownloader httpDownloader = new HttpDownloader();
        String result = httpDownloader.download(urlString);
        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 (SAXException e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        } catch (Exception e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        }
        return infos;
    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {

//      Mp3Info mp3Info = mp3Infos.get(position);
//      System.out.println("----->mp3info" + mp3Info);
        super.onListItemClick(l, v, position, id);
    }

}

xml的

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:paddingBottom="1dip"
    android:paddingLeft="10dip"
    android:paddingRight="10dip"
    android:paddingTop="1dip">

    <TextView
        android:id="@+id/mp3_name"
        android:layout_width="180dip"
        android:layout_height="30dip"
        android:textSize="10pt"
         />
    <TextView
        android:id="@+id/mp3_size"
        android:layout_width="180dip"
        android:layout_height="30dip"
        android:textSize="10pt"
         />

</LinearLayout>


调试的是有值的
啊啊啊啊啊啊弄了好久啊,谁知道什么问题的帮帮我啊

解决方案

你的代码贴全了吗?

  for (Iterator iterator = mp3Infos.iterator(); iterator.hasNext();

mp3Infos 是什么?是音乐数据的集合吗?把错误贴出来看看

解决方案二:

只用一个引用试试,在上面HashMap map=null;
下面map=new HashMap

时间: 2024-10-26 21:49:29

listview-大四安卓学习mars播放器Listview的问题的相关文章

安卓开发音乐播放器-怎么编写在线音乐播放器

问题描述 怎么编写在线音乐播放器 现在我做完了最简单的从手机上或模拟器上获取音乐,,怎么实现在线播放? 解决方案 谢谢啊开发音乐播放器-怎么编写在线音乐播放器-安卓音乐播放器开发"> 解决方案二: http://blog.csdn.net/wwj_748/article/details/20933055

安卓开发音乐播放器-急!!!关于音乐播放器UI的问题 在线等 求思路 具体一点更好或者。。。

问题描述 急!!!关于音乐播放器UI的问题 在线等 求思路 具体一点更好或者... 像这种音乐播放器的悬浮控制条怎么实现的开发音乐播放器-急!!!关于音乐播放器UI的问题 在线等 求思路 具体一点更好或者...-音乐播放器ui素材"> 解决方案 可以定义一个UIView 放在父视图的最上面,但要放到屏幕之外,点击歌曲的时候可以向上移动UIView的距离,最下边的进度条可以使用progressView 根据时间来调整 也可以放在TableView的下边,点击歌曲的时候,TableView整体

ASP.NET ListView控件学习系列1-了解ListView控件

ASP.NET中新的ListView控件为显示和CURD数据库操作提供了基于模板的布局,使之成为一项极好的方式,建立以数据为中心的Web应用程序. 当你编写以用户为中心的应用程序时,总需要某种形式的数据集,起码来说,你需要从一个数据源如关系数据库或XML文件检索数据,在显示给用户之前先要进行格式化,尽管ASP.NET之前的版本就提供了以数据为中心的显示控件如GridView,这些控件缺乏专业Web开发人员需要的可自定义和可扩展特性,为了解决这个问题,ASP.NET3.5提供了一个新的控件List

ASP.NET ListView控件学习系列2-编辑ListView(Edit,Update,Insert,Delete)

一.编辑,取消,更新操作 首先拖一个ListView控件到页面,然后按如下代码进行调整,这里为了利用ListView控件中按钮的内置功能CommandName必须和我们这里的名字一样 前端代码 <asp:ListView ID="ListView1" runat="server" OnItemEditing="ListView1_ItemEditing" OnItemCanceling="ListView1_ItemCanceli

Android应用开发之简易、大气音乐播放器实现专辑倒影效果_Android

今天要实现的功能是实现专辑倒影效果,这个功能已经属于图像处理方面的了,对图像处理我不怎么在行,等一下会介绍一个很实用的工具类,专门用来进行图像处理的.这个工具类不是我写的,我只是拿来用到自己的项目当中,这已经足够了,我已经完美实现我想要的效果. 效果图: < 一个很有用的工具类 /SimpleBeautyMusicPlayer/src/com/wwj/sb/utils/ImageUtil.java package com.wwj.sb.utils; import java.io.ByteArra

Android 使用Vitamio打造自己的万能播放器(2)—— 手势控制亮度、音量、缩放_Android

前言 本章继续完善播放相关播放器的核心功能,为后续扩展打好基础. 系列 1.Android 使用Vitamio打造自己的万能播放器(1)--准备    正文            一.实现目标  1.1 亮度控制   模仿VPlayer界面:  1.2 声音控制    模仿VPlayer界面:  1.3 画面缩放   根据下面API提供画面的拉伸.剪切.100%.全屏            二.Vitamio API 介绍  VideoView  2.1 public void start()

威动播放器推出AirPlay功能,引爆移动端影音投射

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 在流媒体共享播放领域享有极高口碑的威动播放器(VidOn Player)本周迎来重大更新.新版播放器将添加AirPlay和在线字幕下载功能,带给用户更全面的播放体验.这是威动播放器为进军客厅市场所做的一次华丽升级. AirPlay:引爆移动影音投射大屏时代 AirPlay是苹果公司率先提出的一种无线传输协议.通过此技术,用户可以将iPhone

Android 开源在线音乐播放器_Android

封面图:  简介 波尼音乐是一款开源Android在线音乐播放器. 播放本地音乐与在线音乐 在线音乐排行榜,如热歌榜.新歌榜等 高仿云音乐的黑胶唱片专辑封面 歌词显示,自动搜索歌词 夜间模式 定时关闭 更新说明 v 1.0 First Release TODO 在线音乐可以免下载加入我的音乐列表 在线音乐自动缓存 编辑音乐信息 项目公开API 在线音乐:百度音乐 天气数据:高德地图 开源技术 okhttp-utils Android-Universal-Image-Loader 关键代码 黑胶唱

初学者-请问音乐播放器怎么扫描本地音乐然后显示在ListView上

问题描述 请问音乐播放器怎么扫描本地音乐然后显示在ListView上 求教,有代码也好,我 android:id="@+id/android:list" 这是listview的ID 还有我想安装在平板电脑上,没有SD卡 只有内存 解决方案 getContentResolver().query(MediaStore.Audio.Media.INTERNAL_CONTENT_URI,null,null,null,null)