public class MainActivity extends Activity implements IXListViewListener{
String path="http://www.oschina.net/action/api/news_list?catalog=1&pageSize=";
private XListView list_id;
MyAdapter myAdapter;
Handler han=new Handler(){
List<News> li=new ArrayList<News>();
public void handleMessage(Message msg) {
@SuppressWarnings("unchecked")
List<News> list = (List<News>)msg.obj;
int num = msg.what;
if(num==1){
li.addAll(list);
myAdapter = new MyAdapter(MainActivity.this,li);
list_id.setAdapter(myAdapter);
}else if (num==2){
li.clear();
li.addAll(list);
myAdapter.notifyDataSetChanged();
}else if (num==3){
li.clear();
li.addAll(list);
myAdapter.notifyDataSetChanged();
}
loadOver();
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list_id = (XListView)findViewById(R.id.list_id);
list_id.setXListViewListener(this);
list_id.setPullRefreshEnable(true);
// list_id.setLongClickable(true);
list_id.setPullLoadEnable(true);
new Thread(){
public void run() {
getData(10,1);
};
}.start();
}
public void getData(int count,int num){
try {
URL url =new URL(path+count);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
conn.connect();
InputStream inStream = conn.getInputStream();
getXml(inStream,num);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void getXml(InputStream inStream,int i){
String name = null;
List<News> list = new ArrayList<News>();
News news = null;
// 解析全部的xml
// boolean isParse = true;
try {
// 创建一个xmlPullParser的工厂
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
// 获取一个解析实例
XmlPullParser parse = factory.newPullParser();
// 设置输入流的编码格式
parse.setInput(inStream, "UTF-8");
// 当前事件的类型
int eventType = parse.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
Log.i("zzz","name的值:"+name);
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
Log.i("zzz","开始" );
break;
case XmlPullParser.START_TAG:
name = parse.getName();
if ("news".equals(name)) {
news = new News();
}
break;
case XmlPullParser.TEXT:
if ("title".equals(name)) {
news.setTitle(parse.getText());
} else if ("pubDate".equals(name)) {
news.setPubDate(parse.getText());
}
case XmlPullParser.END_TAG:
name = parse.getName();
if ("news".equals(name)) {
list.add(news);
news = null;
}
name="";
break;
}
eventType = parse.next();
}
Message msg = Message.obtain();
msg.obj = list;
msg.what=i;
han.sendMessage(msg);
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
int a=3;
@Override
public void onRefresh() {
// TODO Auto-generated method stub
new Thread(){
public void run() {
getData(a,2);
a+=3;
};
}.start();
}
@Override
public void onLoadMore() {
// TODO Auto-generated method stub
new Thread(){
public void run() {
getData(a,2);
a+=3;
};
}.start();
}
// 停止加载更多/刷新
public void loadOver() {
// 停止加载更多
list_id.stopLoadMore();
// 停止刷新
list_id.stopRefresh();
//设置刷新时的时间
list_id.setRefreshTime(getTime());
}
public String getTime(){
SimpleDateFormat format=new SimpleDateFormat("hh:mm:ss");
Date date=new Date();
String time = format.format(date);
return time;
}
}