android示例之音乐播放器第一天补充

来源:互联网 发布:句解霸软件官方下载 编辑:程序博客网 时间:2024/06/06 23:52

补充第一天未完成的功能是:把读取的服务器端的文件以列表的形式显示在ListView中。

public class PlayerActivity extends ListActivity {private static final int UPDATE=1;private static final int ABOUT=2;private List<Mp3Info> mp3Infos=null;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        this.mp3Infos=new ArrayList<Mp3Info>();        new Thread(r).start();    }    /**     * 点击MEUN按钮,弹出菜单     */    @Override    public boolean onCreateOptionsMenu(Menu menu) {    menu.add(0, UPDATE, 1, R.string.update);    menu.add(0, ABOUT, 2, R.string.about);    return super.onCreateOptionsMenu(menu);    }    /**     * 响应用户点击了哪个菜单     */    @Override    public boolean onOptionsItemSelected(MenuItem item) {    if(item.getItemId()==UPDATE){    //更新列表    new Thread(r).start();    }else if(item.getItemId()==ABOUT){    //点击了关于菜单    }    return super.onOptionsItemSelected(item);    }    /**     * 下载服务器端的xml文件,返回文件的内容     * @param urlStr     * @return     */    public String updateList(String urlStr){    FileDownloader fileDownloader=new FileDownloader();    String content=fileDownloader.download(urlStr);    return content;    }    /**     * 解析下载的xml文件     * @param xmlStr     * @return     */    public void parse(String xmlStr){    SAXParserFactory factory=SAXParserFactory.newInstance();    try {XMLReader reader=factory.newSAXParser().getXMLReader();FileContentHandler fileContentHandler=new FileContentHandler(this.mp3Infos);reader.setContentHandler(fileContentHandler);reader.parse(new InputSource(new StringReader(xmlStr)));} catch (Exception e) {e.printStackTrace();}    }    /**     * handler默认关联主线程,在主线程中处理UI,显示列表     */    Handler handler=new Handler(){    public void handleMessage(Message msg) {    //显示列表    showList();    }    };    /**     * 新开线程处理下载操作     */    Runnable r=new Runnable(){    public void run() {    String xml=updateList("http://192.168.1.100:8080/test/resources.xml");    //解析下载的XML文件parse(xml);Message msg=handler.obtainMessage();msg.sendToTarget();    }    };    /**     * 把解析的结果显示到ListActivity的ListView中     */    public void showList(){   List<HashMap<String,String>> list=new ArrayList<HashMap<String,String>>();   for(Iterator iter=mp3Infos.iterator();iter.hasNext();){   Mp3Info mp3Info=(Mp3Info)iter.next();   HashMap<String,String> map=new HashMap<String,String>();   map.put("mp3Name", mp3Info.getMp3Name());   map.put("mp3Size", mp3Info.getMp3Size());   list.add(map);   }   SimpleAdapter simpleAdapter=new SimpleAdapter(PlayerActivity.this,list,R.layout.list,new String[]{"mp3Name","mp3Size"},new int[]{R.id.mp3Name,R.id.mp3Size});   setListAdapter(simpleAdapter);    }}

直接上代码,以后自己可以查看。新的知识点可能就是把xml文件解析,然后把内容按照ListView显示到Activity中。

0 0
原创粉丝点击