package com.example.weektwo;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import android.app.Activity;
import android.os.Bundle;
import com.example.week2.entity.News;
import com.example.weektwo.util.SimpleDataExample;
import com.example.weektwo.util.XListView;
import com.example.weektwo.util.XListView.IXListViewListener;
import com.koushikdutta.async.future.FutureCallback;
import com.koushikdutta.ion.Ion;
public class MainActivity extends Activity implements IXListViewListener {
List<News> nList;
List<News> allList = new ArrayList<News>();
int catalog = 1;
int pageIndex = 1;
int pageSize = 20;
XListView lv_main;
MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv_main = (XListView) findViewById(R.id.lv_main_xlistview);
adapter = new MyAdapter(this);
lv_main.setAdapter(adapter);
// 添加XListView的上拉和下拉刷新监听器
lv_main.setPullLoadEnable(true);
lv_main.setPullRefreshEnable(true);
lv_main.setXListViewListener(this);
getData();
}
// 请求网络
private void getData() {
// TODO Auto-generated method stub
String ulr = "http://www.oschina.net/action/api/news_list?catalog=1&pageIndex="
+ pageIndex + "&pageSize=20";
Ion.with(getApplicationContext()).load(ulr).asString()
.setCallback(new FutureCallback<String>() {
@Override
public void onCompleted(Exception e, String result) {
// TODO Auto-generated method stub
if (e != null) {
return;
}
pull(result);
allList.addAll(nList);
adapter.addrest(allList);
}
});
}
//
public void pull(String xml) {
News books = null;
try {
// 获取factory
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
// 获取 parser
XmlPullParser parser = factory.newPullParser();
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(
xml.getBytes());
// 设置流
parser.setInput(byteArrayInputStream, "UTF-8");
int type_pull = parser.getEventType();
while (parser.getEventType() != XmlPullParser.END_DOCUMENT) {
switch (type_pull) {
case XmlPullParser.START_DOCUMENT:// 开始接收文件(走一次)
nList = new ArrayList<News>();
break;
case XmlPullParser.START_TAG:// 开始解析元素
if ("news".equals(parser.getName())) {
// 得到对象呀
books = new News();
}
if (books != null) {
if ("id".equals(parser.getName())) {
books.id = parser.nextText();
} else if ("title".equals(parser.getName())) {
books.title = parser.nextText();
} else if ("body".equals(parser.getName())) {
books.body = parser.nextText();
} else if ("commentCount".equals(parser.getName())) {
books.commentCount = parser.nextText();
} else if ("author".equals(parser.getName())) {
books.author = parser.nextText();
} else if ("authorid".equals(parser.getName())) {
books.authorid = parser.nextText();
} else if ("pubDate".equals(parser.getName())) {
books.pubDate = parser.nextText();
} else if ("newstype".equals(parser.getName())) {
if ("type".equals(parser.getName())) {
books.newstype.type = parser.nextText();
} else if ("authoruid2".equals(parser.getName())) {
books.newstype.authoruid2 = parser.nextText();
}
}
}
break;
case XmlPullParser.END_TAG:// 结束解析元素
// 判断是不是 Book
if ("news".equals(parser.getName())) {
nList.add(books);
}
break;
case XmlPullParser.END_DOCUMENT:// 结束接收文件
break;
default:
break;
}
type_pull = parser.next();
}
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onRefresh() {
// TODO Auto-generated method stub
pageIndex = 1;
nList.clear();
allList.clear();
getData();
SimpleDataExample.setFormat("dddddddddddd", getApplicationContext());
SimpleDataExample.getFormat("dddddddddddd", getApplicationContext(), lv_main);
}
@Override
public void onLoadMore() {
// TODO Auto-generated method stub
pageIndex ++;
getData();
SimpleDataExample.setFormat("dddddddddddd", getApplicationContext());
SimpleDataExample.getFormat("dddddddddddd", getApplicationContext(), lv_main);
}
}