private String name;
String path="http://www.oschina.net/action/api/news_list";
private LinkedList<News> list=new LinkedList<News>();
private MyAdapter adapter;
<pre name="code" class="java">Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
// 加载初始化数据
case 1:
list = (LinkedList<News>) msg.obj;
adapter = new MyAdapter(MainActivity.this, list);
lv.setAdapter(adapter);
// loadOver();
break;
// 刷新
case 2:
list.clear();
for (News dataBean : (LinkedList<News>)msg.obj) {
//象开头添加
list.addFirst(dataBean);
}
// 刷新适配器
adapter.notifyDataSetChanged();
loadOver();
break;
// 加载更多
case 3:
for (News dataBean : (LinkedList<News>)msg.obj) {
//象结尾添加
list.addLast(dataBean);
}
// 刷新适配器
adapter.notifyDataSetChanged();
loadOver();
break;
}
};
};
<span style="white-space:pre"> </span>=======oncreat==========
<span style="white-space:pre"> </span>new Thread(){
public void run() {
getData(1);
};
}.start();
// 下拉刷新是否激活
lv.setPullRefreshEnable(true);
// 加载更多是否激活
lv.setPullLoadEnable(true);
// xlistView刷新和加载更多的监听
lv.setXListViewListener(this);
<span style="white-space:pre"> </span>// 停止加载更多/刷新
public void loadOver() {
// 停止加载更多
lv.stopLoadMore();
// 停止刷新
lv.stopRefresh();
//设置刷新时的时间
lv.setRefreshTime(getTime());
}
//更新时间
public String getTime(){
SimpleDateFormat format=new SimpleDateFormat("hh:mm:ss");
Date date=new Date();
String time = format.format(date);
return time;
}
<pre name="code" class="java">====HttpURLConnection+pull解析======
private void getData(int i) {
try {
URL url = new URL(path);
HttpURLConnection openConnection = (HttpURLConnection) url
.openConnection();
openConnection.setRequestMethod("GET");
openConnection.connect();
int responseCode = openConnection.getResponseCode();
if (responseCode == 200) {
InputStream inputStream = openConnection.getInputStream();
pullParseXml(inputStream,i);
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void pullParseXml(InputStream inputStream,int a) {
LinkedList<News> list = new LinkedList<News>();
News data = null;
// 解析全部的xml
// boolean isParse = true;
try {
// 创建一个xmlPullParser的工厂
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
// 获取一个解析实例
XmlPullParser parse = factory.newPullParser();
// 设置输入流的编码格式
parse.setInput(inputStream, "UTF-8");
// 当前事件的类型
int eventType = parse.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
break;
case XmlPullParser.START_TAG:
name = parse.getName();
if ("news".equals(name)) {
data = new News();
}
break;
case XmlPullParser.TEXT:
System.out.println(parse.getText());
if ("title".equals(name)) {
data.setTitle(parse.getText());
} else if ("author".equals(name)) {
data.setAuthor(parse.getText());
} else if ("pubDate".equals(name)) {
data.setPubDate(parse.getText());
} else if ("commentCount".equals(name)) {
data.setCommentCount(parse.getText());
} else if ("body".equals(name)) {
data.setBody(parse.getText());
}
break;
case XmlPullParser.END_TAG:
name = parse.getName();
if ("news".equals(name)) {
list.add(data);
data = null;
}
name="";
break;
}
eventType = parse.next();
}
Message msg = Message.obtain();
msg.what=a;
msg.obj = list;
handler.sendMessage(msg);
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
======加载和刷新的方法=========
@Override
public void onRefresh() {
new Thread(){
public void run() {
getData(2);
};
}.start();
}
@Override
public void onLoadMore() {
new Thread(){
public void run() {
getData(3);
};
}.start();
}