Android 从本地服务器下载文件与解析过程详解(四)

来源:互联网 发布:linux 发送http请求 编辑:程序博客网 时间:2024/06/03 13:42
(3)、主代码:

java代码:

package com.piseces.mp3player;
import java.io.StringReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
import com.pisces.model.Mp3Info;
import com.pisces.xml.Mp3ListContentHandler;
import com.pisecs.download.HttpDownloader;
import android.app.Activity;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.SimpleAdapter;
public class Mp3ListActivityextends ListActivity {
private static finalint MENU_UPDATE=1;
private static finalint MENU_ABOUT=2;
/** Called when the activity is first created.*/
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
updateListView();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
menu.add(0, MENU_UPDATE,1, R.string.mp3list_update);
menu.add(0, MENU_ABOUT,2, R.string.mp3list_about);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId()==MENU_UPDATE){
//更新按钮
updateListView();
}elseif(item.getItemId()==MENU_ABOUT){
//关于按钮
}
return super.onOptionsItemSelected(item);
}
public SimpleAdapter buildSimpleAdapter(List<Mp3Info> mp3Infos){
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("mp3_name", mp3Info.getMp3Name());
map.put("mp3_size", mp3Info.getMp3Size());
list.add(map);
}
SimpleAdapter simpleAdapter=new SimpleAdapter(Mp3ListActivity.this, list, R.layout.mp3_info_item,
new String[]{"mp3_name","mp3_size"},
new int[]{R.id.mp3_name,R.id.mp3_size});
return simpleAdapter;
}
//列表更新按钮方法
public  void  updateListView(){
String xml=downloadXML("http://192.168.2.101:8080/mp3/resources.xml");
System.out.println("xml--->"+xml);
List<Mp3Info> mp3Infos=parseSAX(xml);
SimpleAdapter SA=buildSimpleAdapter(mp3Infos);
setListAdapter(SA );
}
public String downloadXML(String urlStr){
HttpDownloader httpDownloader=new HttpDownloader();
String xmlStr=httpDownloader.download(urlStr);
return xmlStr;
}
//SAX解析过程
public List<Mp3Info> parseSAX(String xmlStr){
SAXParserFactory factory=SAXParserFactory.newInstance();
SAXParser parser;
List<Mp3Info> infos=new ArrayList<Mp3Info>();
try {
parser = factory.newSAXParser();
XMLReader xmlreader=parser.getXMLReader();
Mp3ListContentHandler mp3listContentHandler=new Mp3ListContentHandler(infos);
xmlreader.setContentHandler(mp3listContentHandler);
xmlreader.parse(new InputSource(new StringReader(xmlStr)));
for(Iterator iterator=infos.iterator();iterator.hasNext();){
System.out.println("*************");
Mp3Info mp3Info=(Mp3Info)iterator.next();
System.out.println(mp3Info);
}
} catch (Exception e) {
e.printStackTrace();
}
return infos;
}
}