解析Xml
2016-07-27 16:23
141 查看
private List<News> list;
private ListView lv;
// 使用handle更新UI
Handler hand = new Handler() {
public void handleMessage(android.os.Message msg) {
hand.sendEmptyMessageDelayed(0, 2000);
lv.setAdapter(new Myapdter(MainActivity.this, list));
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.lv);
// 使用线程
new Thread() {
public void run() {
hand.sendEmptyMessageDelayed(0, 2000);
//地址
show("http://www.sciencenet.cn/xml/iphoneinterface.aspx?type=news&nums=20&pass=2");
};
}.start();
// 设置监听事件
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("url", list.get(arg2).getLink());
startActivity(intent);
}
});
}
// 解析数据
public void show(String sturl) {
URL url;
try {
url = new URL(sturl);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.connect();
int code = con.getResponseCode();
if (code == 200) {
InputStream is = con.getInputStream();
// pull解析
XmlPullParser parser = Xml.newPullParser();
parser.setInput(is, "utf-8");
News n = null;
int eventype = parser.getEventType();
while (eventype != XmlResourceParser.END_DOCUMENT) {
String tagName = parser.getName();
switch (eventype) {
case XmlPullParser.START_DOCUMENT:
list = new ArrayList<News>();
break;
case XmlPullParser.START_TAG:
if ("item".equalsIgnoreCase(tagName)) {
n = new News();
} else if ("title".equals(tagName)) {
n.setTitle(parser.nextText());
} else if ("link".equals(tagName)) {
n.setLink(parser.nextText());
} else if ("imgs".equals(tagName)) {
n.setImgs(parser.nextText());
} else if ("copyright".equals(tagName)) {
n.setCopyright(parser.nextText());
} else if ("pubDate".equals(tagName)) {
n.setPubDate(parser.nextText());
}
break;
case XmlPullParser.END_TAG:
if ("item".equals(tagName)) {
list.add(n);
// Log.e("info", "+++++" + n);
}
break;
case XmlPullParser.END_DOCUMENT:
break;
}
eventype = parser.next();
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private ListView lv;
// 使用handle更新UI
Handler hand = new Handler() {
public void handleMessage(android.os.Message msg) {
hand.sendEmptyMessageDelayed(0, 2000);
lv.setAdapter(new Myapdter(MainActivity.this, list));
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.lv);
// 使用线程
new Thread() {
public void run() {
hand.sendEmptyMessageDelayed(0, 2000);
//地址
show("http://www.sciencenet.cn/xml/iphoneinterface.aspx?type=news&nums=20&pass=2");
};
}.start();
// 设置监听事件
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("url", list.get(arg2).getLink());
startActivity(intent);
}
});
}
// 解析数据
public void show(String sturl) {
URL url;
try {
url = new URL(sturl);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.connect();
int code = con.getResponseCode();
if (code == 200) {
InputStream is = con.getInputStream();
// pull解析
XmlPullParser parser = Xml.newPullParser();
parser.setInput(is, "utf-8");
News n = null;
int eventype = parser.getEventType();
while (eventype != XmlResourceParser.END_DOCUMENT) {
String tagName = parser.getName();
switch (eventype) {
case XmlPullParser.START_DOCUMENT:
list = new ArrayList<News>();
break;
case XmlPullParser.START_TAG:
if ("item".equalsIgnoreCase(tagName)) {
n = new News();
} else if ("title".equals(tagName)) {
n.setTitle(parser.nextText());
} else if ("link".equals(tagName)) {
n.setLink(parser.nextText());
} else if ("imgs".equals(tagName)) {
n.setImgs(parser.nextText());
} else if ("copyright".equals(tagName)) {
n.setCopyright(parser.nextText());
} else if ("pubDate".equals(tagName)) {
n.setPubDate(parser.nextText());
}
break;
case XmlPullParser.END_TAG:
if ("item".equals(tagName)) {
list.add(n);
// Log.e("info", "+++++" + n);
}
break;
case XmlPullParser.END_DOCUMENT:
break;
}
eventype = parser.next();
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
相关文章推荐
- nginx 改变标题 ngx_setproctitle
- 最长上升子序列
- HDU 2181 哈密顿绕行世界问题(经典DFS+回溯)
- bzoj 1588: [HNOI2002]营业额统计 splay
- Android——超炫dialog弹窗效果,及自定义view dialog
- Android源码的Binder权限控制
- 34. Search for a Range
- linux 题目 (三)
- ALAsset/PHAsset 中的图片和视频文件
- 备受SQL青睐的“1”
- Java面向对象
- 线程同步,锁的相关问题
- HDU 2084 数塔(动态规划DP)
- 用JS实现关闭当前窗口【兼容谷歌浏览器】
- JSP的out对象
- Hadopp 入门 基本概念(一)
- 16进制颜色值
- tjut 4614
- singleTop和singleTask
- MySql的触发器