xml解析+刷新
2016-06-30 11:45
162 查看
public class MainActivity extends Activity implements IXListViewListener {
//接口地址
String path="http://www.oschina.net/action/api/news_list";
LinkedList<Data> list = new LinkedList<Data>();
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
String xml = (String) msg.obj;
xml(xml);
xlistView.setAdapter(new MyAdpapter(MainActivity.this, list));
for (Data news : list) {
System.out.println(news.toString());
}
};
};
private XListView xlistView;
private Data data;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获得控件对象
xlistView=(XListView)findViewById(R.id.lv);
// 下拉刷新是否激活
xlistView.setPullRefreshEnable(true);
// 加载更多是否激活
xlistView.setPullLoadEnable(true);
// xlistView刷新和加载更多的监听
xlistView.setXListViewListener(this);
getXml();
}
private void getXml() {
HttpUtils httpUtils = new HttpUtils();
httpUtils.configCurrentHttpCacheExpiry(0);
httpUtils.send(HttpMethod.GET, path, new RequestCallBack<String>() {
@Override
public void onFailure(HttpException arg0, String arg1) {
// TODO Auto-generated method stub
}
@Override
public void onSuccess(ResponseInfo<String> arg0) {
String result = arg0.result;
Message msg = Message.obtain();
msg.obj = result;
handler.sendMessage(msg);
}
});
}
protected void xml(String xml) {
// 得到解析器
XmlPullParser pullParser = Xml.newPullParser();
// 把Stirng转成流
ByteArrayInputStream arrayInputStream = new ByteArrayInputStream(
xml.getBytes());
try {
pullParser.setInput(new InputStreamReader(arrayInputStream));
// 得到事件类型
int eventType = pullParser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_TAG:
// 得到标签名
String tagName = pullParser.getName();
if ("news".equals(tagName)) {
data = new Data();
} else if ("title".equals(tagName)) {
data.title = pullParser.nextText();
} else if ("pubDate".equals(tagName)) {
data.pubDate = pullParser.nextText();
}
break;
case XmlPullParser.END_TAG:
// 结束标签的名字
tagName = pullParser.getName();
if ("news".equals(tagName)) {
list.addLast(data);
}
break;
}
eventType = pullParser.next();
}
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public String getTime(){
SimpleDateFormat format=new SimpleDateFormat("hh:mm:ss");
Date date=new Date();
String time = format.format(date);
return time;
}
@Override
public void onRefresh() {
getXml();
// 停止加载更多
xlistView.stopLoadMore();
// 停止刷新
xlistView.stopRefresh();
//设置刷新时的时间
xlistView.setRefreshTime(getTime());
}
@Override
public void onLoadMore() {
getXml();
xlistView.stopLoadMore();
xlistView.stopRefresh();
}
}
//接口地址
String path="http://www.oschina.net/action/api/news_list";
LinkedList<Data> list = new LinkedList<Data>();
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
String xml = (String) msg.obj;
xml(xml);
xlistView.setAdapter(new MyAdpapter(MainActivity.this, list));
for (Data news : list) {
System.out.println(news.toString());
}
};
};
private XListView xlistView;
private Data data;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获得控件对象
xlistView=(XListView)findViewById(R.id.lv);
// 下拉刷新是否激活
xlistView.setPullRefreshEnable(true);
// 加载更多是否激活
xlistView.setPullLoadEnable(true);
// xlistView刷新和加载更多的监听
xlistView.setXListViewListener(this);
getXml();
}
private void getXml() {
HttpUtils httpUtils = new HttpUtils();
httpUtils.configCurrentHttpCacheExpiry(0);
httpUtils.send(HttpMethod.GET, path, new RequestCallBack<String>() {
@Override
public void onFailure(HttpException arg0, String arg1) {
// TODO Auto-generated method stub
}
@Override
public void onSuccess(ResponseInfo<String> arg0) {
String result = arg0.result;
Message msg = Message.obtain();
msg.obj = result;
handler.sendMessage(msg);
}
});
}
protected void xml(String xml) {
// 得到解析器
XmlPullParser pullParser = Xml.newPullParser();
// 把Stirng转成流
ByteArrayInputStream arrayInputStream = new ByteArrayInputStream(
xml.getBytes());
try {
pullParser.setInput(new InputStreamReader(arrayInputStream));
// 得到事件类型
int eventType = pullParser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_TAG:
// 得到标签名
String tagName = pullParser.getName();
if ("news".equals(tagName)) {
data = new Data();
} else if ("title".equals(tagName)) {
data.title = pullParser.nextText();
} else if ("pubDate".equals(tagName)) {
data.pubDate = pullParser.nextText();
}
break;
case XmlPullParser.END_TAG:
// 结束标签的名字
tagName = pullParser.getName();
if ("news".equals(tagName)) {
list.addLast(data);
}
break;
}
eventType = pullParser.next();
}
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public String getTime(){
SimpleDateFormat format=new SimpleDateFormat("hh:mm:ss");
Date date=new Date();
String time = format.format(date);
return time;
}
@Override
public void onRefresh() {
getXml();
// 停止加载更多
xlistView.stopLoadMore();
// 停止刷新
xlistView.stopRefresh();
//设置刷新时的时间
xlistView.setRefreshTime(getTime());
}
@Override
public void onLoadMore() {
getXml();
xlistView.stopLoadMore();
xlistView.stopRefresh();
}
}
相关文章推荐
- 轻量级数据库 ----SQLite
- svm 核函数
- ftl总结
- Python列出一个文件夹及其子目录的所有文件
- Windows2003下php5.4安装配置教程(IIS)
- 多维化计算机数据压缩方法
- 静态Fragment碎片使用 范例
- CentOS镜像使用
- Android 自定义 spinner (背景、字体颜色)
- Standord NLP组整理的NLP工具、资源列表
- Android对外置sd卡的权限问题(上)
- 关于BroadcastReceiver 监听网络状态
- 分治算法-面试题
- wamp 提示 Directive allow_call_time_pass_reference is no longer avaiable in PHP
- 可视区域懒加载
- Hibernate 之 Session 与 Session Factory 对象
- java日志文件log4j.properties配置详解
- NSArray与NSPredicate使用
- python 模拟微博登录
- Lombok引入简化Java代码