package com.bwie.test;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import com.bwie.bean.User;
import android.os.Bundle;
import android.os.Handler;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.ListView;
public class MainActivity extends Activity {
private ListView listView;
private ArrayList<User> list;
private User user;
private int eventType;
//创建dandler方法
@SuppressLint("HandlerLeak")
Handler handler=new Handler(){
public void handleMessage(android.os.Message msg) {
if(msg.what==0){
listView.setAdapter(new MyBaseAdapter(MainActivity.this,list));
}
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化控件
listView = (ListView) findViewById(R.id.listView);
//调用get方法
Get("http://www.sciencenet.cn/xml/iphoneInterface.aspx?type=news&nums=20&pass=");
}
//get方法解析数据
private void Get(final String path) {
//创建线程
new Thread(){
public void run() {
try {
URL url=new URL(path);
HttpURLConnection openConnection = (HttpURLConnection) url.openConnection();
int responseCode = openConnection.getResponseCode();
if(responseCode==200){
InputStream inputStream = openConnection.getInputStream();
getPull(inputStream);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}.start();
}
//pull解析
protected void getPull(InputStream inputStream) {
// 获取工厂
try {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser newPullParser = factory.newPullParser();
newPullParser.setInput(inputStream, "utf-8");
int type = newPullParser.getEventType();
while (type != XmlPullParser.END_DOCUMENT) {
String name = newPullParser.getName();
switch (type) {
case XmlPullParser.START_DOCUMENT:
list = new ArrayList<User>();
break;
case XmlPullParser.START_TAG:
if(name.equals("item")){
user = new User();
}else if(name.equals("title")){
user.setTitle(newPullParser.nextText());
}else if(name.equals("link")){
user.setLink(newPullParser.nextText());
}else if(name.equals("imgs")){
user.setImgs(newPullParser.nextText());
}else if(name.equals("description")){
user.setDescription(newPullParser.nextText());
}else if(name.equals("copyright")){
user.setCopyright(newPullParser.nextText());
}else if(name.equals("pubDate")){
user.setPubDate(newPullParser.nextText());
}
break;
case XmlPullParser.END_TAG:
if(name.equals("item")){
list.add(user);
}
break;
default:
break;
}
type = newPullParser.next();
}
} catch (Exception e) {
e.printStackTrace();
}
for (User m:list ) {
System.out.println(m.toString());
}
//将数据发送给主线程
handler.sendEmptyMessage(0);
}
}