public class MainActivity extends Activity {
private ListView lv;
private ArrayList<DataBean> list=new ArrayList<DataBean>();
String path="http://v.juhe.cn/weixin/query?key=271f7c3d187e09fd414733d4e8b06e8b&dtype=xml";
private Handler mHandler=new Handler(){
public void handleMessage(Message msg) {
ArrayList<DataBean> list=(ArrayList<DataBean>) msg.obj;
//適配器要在handler裏邊用
lv.setAdapter(new MyAdapter(MainActivity.this,list));
//設置監聽
jianTing();
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//獲取控件
lv = (ListView) findViewById(R.id.lv);
//獲取數據
getData();
}
//監聽
public void jianTing(){
//監聽
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
Intent intent=new Intent(MainActivity.this,Main2Activity.class);
//傳遞路徑
intent.putExtra("url", list.get(arg2).getUrl());
startActivity(intent);
}
});
}
//請求並解析數據
private void getData() {
new Thread(){
private InputStream in;
private DataBean d;
public void run() {
//創建HttpClient
HttpClient client=new DefaultHttpClient();
//設置請求方式
HttpGet get=new HttpGet(path);
try {
//執行
HttpResponse response = client.execute(get);
//得到一個結果碼
int statusCode = response.getStatusLine().getStatusCode();
//判斷這個結果碼
if (statusCode==200) {
//得到一個流
in = response.getEntity().getContent();
//打印
System.out.println(in);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
//解析
XmlPullParserFactory factory=XmlPullParserFactory.newInstance();
//創建解析器
XmlPullParser newPullParser = factory.newPullParser();
//把文件放進去,開始解析
newPullParser.setInput(in,"utf-8");
//獲取一個類型
int eventType = newPullParser.getEventType();
while (eventType!=XmlPullParser.END_DOCUMENT) {
String name = newPullParser.getName();
switch (eventType) {
case XmlPullParser.START_TAG:
if ("firstImg".equals(name)) {
d = new DataBean();
d.setFirstImg(newPullParser.nextText());
}else if ("id".equals(name)) {
d.setId(newPullParser.nextText());
}else if ("mark".equals(name)) {
d.setMark(newPullParser.nextText());
}else if ("source".equals(name)) {
d.setSource(newPullParser.nextText());
}else if ("title".equals(name)) {
d.setTitle(newPullParser.nextText());
}else if ("url".equals(name)) {
d.setUrl(newPullParser.nextText());
}
break;
case XmlPullParser.END_TAG:
if ("item".equals(name)) {
list.add(d);
d=null;
}
break;
default:
break;
}
//繼續下一個
eventType=newPullParser.next();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//創建message
Message msg = new Message();
msg.obj=list;
mHandler.sendMessage(msg);
};
}.start();
}
}
請求數據並xml解析
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.