Android 从本地服务器下载文件与解析过程详解(四)
2013-02-05 16:45
936 查看
(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 Mp3ListActivity
extends ListActivity {
private
static final
int MENU_UPDATE=1;
private
static final
int 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();
}else
if(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;
}
}
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 Mp3ListActivity
extends ListActivity {
private
static final
int MENU_UPDATE=1;
private
static final
int 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();
}else
if(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;
}
}
相关文章推荐
- Android 从本地服务器下载文件与解析过程详解(一)
- Android 从本地服务器下载文件与解析过程详解(二)
- Android 从本地服务器下载文件与解析过程详解(三)
- Android 从本地服务器下载文件与解析过程详解(五)
- Android中measure过程、WRAP_CONTENT详解以及 xml布局文件解析流程浅析
- Android init.rc文件解析过程详解(三)
- Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(上)
- Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析
- Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(上)
- Android中measure过程、WRAP_CONTENT详解以及 xml布局文件解析流程浅析
- Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(上)
- Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(上)
- Android init.rc文件解析过程详解(一)
- Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(下)
- Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(下)
- Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(下)
- 【转载】Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(下)
- Android init.rc文件解析过程详解(一)
- Android init.rc文件解析过程详解(三)
- Android从远程服务器下载文件到本地sd卡中