• mp3播放器(三)(代码重构)


    package com.example.mp3player00;
    
    import java.io.IOException;
    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 xml.Mp3ListContentHandler;
    
    import model.Mp3Info;
    
    import com.example.download.HttpDownloader;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.app.ListActivity;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.SimpleAdapter;
    
    public class Mp3ListActivity extends ListActivity {
        private static final int upadate=1;
        private static final int about=2;
       //以上定义常量,看到值的名字就知道按钮的名字    
       //且为后面修改提供方便
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_mp3_list);
            updateListView();
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.activity_mp3_list, menu);
            menu.add(0, 1, 1,R.string.mp3list_update);
            menu.add(0, 2, 2, R.string.mp3list_about);
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // TODO Auto-generated method stub
            //System.out.println("--->"+item.getItemId());
            if(item.getItemId()==upadate)
            {
                updateListView();
                
                
            }
            else if(item.getItemId()==about)
            {
                //用户点击了关于按钮
            }
            return super.onOptionsItemSelected(item);
        }
        private void updateListView(){
            //用户点击了更新按钮
            
            String xml=downloadXML("http://192.168.1.100:8080/mp3/resources.xml");
            //System.out.println("----->"+xml);
            
                List<Mp3Info> mp3infos = null;
                try {
                    mp3infos = parse(xml);
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }//List<Mp3Info>可以看出一个int,String这样一个类型
                //构建Adapter,首先生成一个List对象。List对象里面存的是HashMap,HashMap里面存的是String
            
                List<HashMap<String,String>> list=new ArrayList<HashMap<String,String>>();
               //将Mp3Info迭代出来
                for (Iterator iterator = mp3infos.iterator(); iterator.hasNext();) {
                    Mp3Info mp3Info = (Mp3Info) iterator.next();
                     //生成一个HashMap对象
                    HashMap<String,String> map=new HashMap<String,String>();
                    //构造一个map
                    map.put("mp3_name", mp3Info.getMp3Name());
                    map.put("mp3_size", mp3Info.getMp3Size());
                    //构造好map后添加到List中,即将HashMap添加到List中
                    list.add(map);
                }
                //生成adapter
                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}); setListAdapter(simpleAdapter); } //写一个单独的下载函数,更加清晰 private String downloadXML(String urlStr) { HttpDownloader httpdownloader=new HttpDownloader(); String result=httpdownloader.download(urlStr); return result; } //在这个函数中解析xml //首先生成xml解析器 private List<Mp3Info> parse(String xmlStr) throws IOException { List<Mp3Info> info=new ArrayList<Mp3Info>(); SAXParserFactory saxParserFactory=SAXParserFactory.newInstance(); try { XMLReader xmlReader=saxParserFactory.newSAXParser().getXMLReader(); Mp3ListContentHandler mp3ListContentHandler=new Mp3ListContentHandler(info); xmlReader.setContentHandler(mp3ListContentHandler); xmlReader.parse(new InputSource(new StringReader(xmlStr))); //解析完数据都天道info里面,然后用for循环迭代出来 for (Iterator iterator = info.iterator(); iterator.hasNext();) { Mp3Info mp3Info = (Mp3Info) iterator.next(); System.out.println(mp3Info); } } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ParserConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } return info; } }


    将updateListView()继续重构

      1 package com.example.mp3player00;
      2 
      3 import java.io.IOException;
      4 import java.io.StringReader;
      5 import java.util.ArrayList;
      6 import java.util.HashMap;
      7 import java.util.Iterator;
      8 import java.util.List;
      9 
     10 import javax.xml.parsers.ParserConfigurationException;
     11 import javax.xml.parsers.SAXParserFactory;
     12 
     13 import org.xml.sax.InputSource;
     14 import org.xml.sax.SAXException;
     15 import org.xml.sax.XMLReader;
     16 
     17 import xml.Mp3ListContentHandler;
     18 
     19 import model.Mp3Info;
     20 
     21 import com.example.download.HttpDownloader;
     22 
     23 import android.os.Bundle;
     24 import android.app.Activity;
     25 import android.app.ListActivity;
     26 import android.view.Menu;
     27 import android.view.MenuItem;
     28 import android.widget.SimpleAdapter;
     29 
     30 public class Mp3ListActivity extends ListActivity {
     31     private static final int upadate=1;
     32     private static final int about=2;
     33    //以上定义常量,看到值的名字就知道按钮的名字    
     34    //且为后面修改提供方便
     35     @Override
     36     protected void onCreate(Bundle savedInstanceState) {
     37         super.onCreate(savedInstanceState);
     38         setContentView(R.layout.activity_mp3_list);
     39         updateListView();
     40     }
     41 
     42     @Override
     43     public boolean onCreateOptionsMenu(Menu menu) {
     44         // Inflate the menu; this adds items to the action bar if it is present.
     45         getMenuInflater().inflate(R.menu.activity_mp3_list, menu);
     46         menu.add(0, 1, 1,R.string.mp3list_update);
     47         menu.add(0, 2, 2, R.string.mp3list_about);
     48         return true;
     49     }
     50 
     51     @Override
     52     public boolean onOptionsItemSelected(MenuItem item) {
     53         // TODO Auto-generated method stub
     54         //System.out.println("--->"+item.getItemId());
     55         if(item.getItemId()==upadate)
     56         {
     57             updateListView();
     58             
     59             
     60         }
     61         else if(item.getItemId()==about)
     62         {
     63             //用户点击了关于按钮
     64         }
     65         return super.onOptionsItemSelected(item);
     66     }
     67     private SimpleAdapter buildSimpleAdapter(List<Mp3Info> mp3infos){
     68         //构建Adapter,首先生成一个List对象。List对象里面存的是HashMap,HashMap里面存的是String
     69         
     70         List<HashMap<String,String>> list=new ArrayList<HashMap<String,String>>();
     71         //将Mp3Info迭代出来
     72         for (Iterator iterator = mp3infos.iterator(); iterator.hasNext();) {
     73             Mp3Info mp3Info = (Mp3Info) iterator.next();
     74              //生成一个HashMap对象
     75             HashMap<String,String> map=new HashMap<String,String>();
     76             //构造一个map
     77             map.put("mp3_name", mp3Info.getMp3Name());
     78             map.put("mp3_size", mp3Info.getMp3Size());
     79             //构造好map后添加到List中,即将HashMap添加到List中
     80             list.add(map);
     81         }
     82         //生成adapter
     83         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}); 84 85 86 return simpleAdapter; 87 88 } 89 private void updateListView(){ 90 //用户点击了更新按钮 91 92 String xml=downloadXML("http://192.168.1.100:8080/mp3/resources.xml"); 93 //System.out.println("----->"+xml); 94 95 List<Mp3Info> mp3infos = null; 96 try { 97 mp3infos = parse(xml); 98 } catch (IOException e) { 99 // TODO Auto-generated catch block 100 e.printStackTrace(); 101 }//List<Mp3Info>可以看出一个int,String这样一个类型 102 SimpleAdapter simpleAdapter=buildSimpleAdapter(mp3infos); 103 setListAdapter(simpleAdapter); 104 105 } 106 //写一个单独的下载函数,更加清晰 107 private String downloadXML(String urlStr) 108 { 109 110 HttpDownloader httpdownloader=new HttpDownloader(); 111 String result=httpdownloader.download(urlStr); 112 return result; 113 } 114 //在这个函数中解析xml 115 //首先生成xml解析器 116 private List<Mp3Info> parse(String xmlStr) throws IOException 117 { 118 List<Mp3Info> info=new ArrayList<Mp3Info>(); 119 SAXParserFactory saxParserFactory=SAXParserFactory.newInstance(); 120 try { 121 XMLReader xmlReader=saxParserFactory.newSAXParser().getXMLReader(); 122 Mp3ListContentHandler mp3ListContentHandler=new Mp3ListContentHandler(info); 123 xmlReader.setContentHandler(mp3ListContentHandler); 124 xmlReader.parse(new InputSource(new StringReader(xmlStr))); 125 //解析完数据都天道info里面,然后用for循环迭代出来 126 for (Iterator iterator = info.iterator(); iterator.hasNext();) { 127 Mp3Info mp3Info = (Mp3Info) iterator.next(); 128 System.out.println(mp3Info); 129 } 130 131 132 } catch (SAXException e) { 133 // TODO Auto-generated catch block 134 e.printStackTrace(); 135 } catch (ParserConfigurationException e) { 136 // TODO Auto-generated catch block 137 e.printStackTrace(); 138 } 139 return info; 140 141 } 142 143 }
  • 相关阅读:
    jmeter结果分析
    JMeter分布式测试
    负载测试
    10.循环控制语句break_continue_pass
    9.控制流语句_for循环
    7.Python 循环语句
    8.控制流语句_while循环
    6.控制流语句_条件控制if
    5.运算符
    4.元祖_列表_字典
  • 原文地址:https://www.cnblogs.com/kyxyes/p/3364470.html
Copyright © 2020-2023  润新知