public class KeFragment extends Fragment implements IXListViewListener{
String path = "http://www.oschina.net/action/api/blog_list";
int index = 10;
private Oschina oschina;
ArrayList<Oschina> myList = new ArrayList<Oschina>();
boolean isRefresh = false;
private MyBaseAdapter myBaseAdapter;
private XListView xlistview;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = View.inflate(getActivity(), R.layout.fragment_tan, null);
xlistview = (XListView) view.findViewById(R.id.xListview);
xlistview.setPullLoadEnable(true);
xlistview.setXListViewListener(this);
requestNet();
return view;
}
private void requestNet() {
HttpUtils httpUtils = new HttpUtils();
String myPath = path + "?type=latest&pageIndex=" + index + "&pageSize=20";
httpUtils.send(HttpMethod.GET, myPath, new RequestCallBack<String>() {
@Override
public void onFailure(HttpException arg0, String arg1) {
// TODO Auto-generated method stub
}
@Override
public void onSuccess(ResponseInfo<String> info) {
String result = info.result;
ByteArrayInputStream arrayInputStream = new ByteArrayInputStream(
result.getBytes());
System.out.println("----" + result);
ArrayList<Oschina> startAnalyze = startAnalyze(arrayInputStream);
if (isRefresh) {
myList.clear();
}
myList.addAll(startAnalyze);
if (myBaseAdapter == null) {
myBaseAdapter = new MyBaseAdapter(getActivity(), myList);
xlistview.setAdapter(myBaseAdapter);
} else {
myBaseAdapter.notifyDataSetChanged();
}
// 消失进度
onLoad();
}
});
}
/**
* 解析XML
*/
protected ArrayList<Oschina> startAnalyze(InputStream inputStream) {
ArrayList<Oschina> twestList = new ArrayList<Oschina>();
try {
XmlPullParser newPullParser = Xml.newPullParser();
newPullParser.setInput(inputStream, "utf-8");
int eventType = newPullParser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
String name = newPullParser.getName();
switch (eventType) {
case XmlPullParser.START_TAG:
if ("blogs".equals(name)) {
oschina = new Oschina();
} else if ("id".equals(name)) {
oschina.setId(Integer.parseInt(newPullParser.nextText()));
} else if ("portrait".equals(name)) {
oschina.setPortrait(newPullParser.nextText());
} else if ("body".equals(name)) {
oschina.setBody(newPullParser.nextText());
} else if ("pubDate".equals(name)) {
oschina.setPubDate(newPullParser.nextText());
} else if ("author".equals(name)) {
oschina.setAuthor(newPullParser.nextText());
}
break;
case XmlPullParser.END_TAG:
if ("blogs".equals(name)) {
twestList.add(oschina);
oschina = null;
}
break;
default:
break;
}
eventType = newPullParser.next();
}
} catch (Exception e) {
e.printStackTrace();
}
return twestList;
}
@Override
public void onRefresh() {
index = 0;
isRefresh = true;
}
@Override
public void onLoadMore() {
index++;
isRefresh = false;
// 重新请求
requestNet();
}
private void onLoad() {
xlistview.stopRefresh();
xlistview.stopLoadMore();
xlistview.setRefreshTime("刚刚");
}
}
String path = "http://www.oschina.net/action/api/blog_list";
int index = 10;
private Oschina oschina;
ArrayList<Oschina> myList = new ArrayList<Oschina>();
boolean isRefresh = false;
private MyBaseAdapter myBaseAdapter;
private XListView xlistview;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = View.inflate(getActivity(), R.layout.fragment_tan, null);
xlistview = (XListView) view.findViewById(R.id.xListview);
xlistview.setPullLoadEnable(true);
xlistview.setXListViewListener(this);
requestNet();
return view;
}
private void requestNet() {
HttpUtils httpUtils = new HttpUtils();
String myPath = path + "?type=latest&pageIndex=" + index + "&pageSize=20";
httpUtils.send(HttpMethod.GET, myPath, new RequestCallBack<String>() {
@Override
public void onFailure(HttpException arg0, String arg1) {
// TODO Auto-generated method stub
}
@Override
public void onSuccess(ResponseInfo<String> info) {
String result = info.result;
ByteArrayInputStream arrayInputStream = new ByteArrayInputStream(
result.getBytes());
System.out.println("----" + result);
ArrayList<Oschina> startAnalyze = startAnalyze(arrayInputStream);
if (isRefresh) {
myList.clear();
}
myList.addAll(startAnalyze);
if (myBaseAdapter == null) {
myBaseAdapter = new MyBaseAdapter(getActivity(), myList);
xlistview.setAdapter(myBaseAdapter);
} else {
myBaseAdapter.notifyDataSetChanged();
}
// 消失进度
onLoad();
}
});
}
/**
* 解析XML
*/
protected ArrayList<Oschina> startAnalyze(InputStream inputStream) {
ArrayList<Oschina> twestList = new ArrayList<Oschina>();
try {
XmlPullParser newPullParser = Xml.newPullParser();
newPullParser.setInput(inputStream, "utf-8");
int eventType = newPullParser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
String name = newPullParser.getName();
switch (eventType) {
case XmlPullParser.START_TAG:
if ("blogs".equals(name)) {
oschina = new Oschina();
} else if ("id".equals(name)) {
oschina.setId(Integer.parseInt(newPullParser.nextText()));
} else if ("portrait".equals(name)) {
oschina.setPortrait(newPullParser.nextText());
} else if ("body".equals(name)) {
oschina.setBody(newPullParser.nextText());
} else if ("pubDate".equals(name)) {
oschina.setPubDate(newPullParser.nextText());
} else if ("author".equals(name)) {
oschina.setAuthor(newPullParser.nextText());
}
break;
case XmlPullParser.END_TAG:
if ("blogs".equals(name)) {
twestList.add(oschina);
oschina = null;
}
break;
default:
break;
}
eventType = newPullParser.next();
}
} catch (Exception e) {
e.printStackTrace();
}
return twestList;
}
@Override
public void onRefresh() {
index = 0;
isRefresh = true;
}
@Override
public void onLoadMore() {
index++;
isRefresh = false;
// 重新请求
requestNet();
}
private void onLoad() {
xlistview.stopRefresh();
xlistview.stopLoadMore();
xlistview.setRefreshTime("刚刚");
}
}