package com.example.xmllist;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import org.xmlpull.v1.XmlPullParser;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Xml;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.example.xmllist.view.XListView;
import com.example.xmllist.view.XListView.IXListViewListener;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;
public class RoidFragment extends Fragment implements IXListViewListener{
private XListView xListView;
String path = "http://www.oschina.net/action/api/tweet_list";
ArrayList<Oschina> myList = new ArrayList<Oschina>();
boolean isRefresh = false;
private int index =1;
private Oschina oschina;
private MysBaseAdapter mysBaseAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = View.inflate(getActivity(), R.layout.news_item, 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 + "?Uid=0&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 (mysBaseAdapter == null) {
mysBaseAdapter = new MysBaseAdapter(getActivity(), myList);
xListView.setAdapter(mysBaseAdapter);
} else {
mysBaseAdapter.notifyDataSetChanged();
}
// 消失进度
onLoad();
}});
}
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 ("tweet".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());
}
break;
case XmlPullParser.END_TAG:
if ("tweet".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("刚刚");
}
}
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import org.xmlpull.v1.XmlPullParser;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Xml;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.example.xmllist.view.XListView;
import com.example.xmllist.view.XListView.IXListViewListener;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;
public class RoidFragment extends Fragment implements IXListViewListener{
private XListView xListView;
String path = "http://www.oschina.net/action/api/tweet_list";
ArrayList<Oschina> myList = new ArrayList<Oschina>();
boolean isRefresh = false;
private int index =1;
private Oschina oschina;
private MysBaseAdapter mysBaseAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = View.inflate(getActivity(), R.layout.news_item, 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 + "?Uid=0&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 (mysBaseAdapter == null) {
mysBaseAdapter = new MysBaseAdapter(getActivity(), myList);
xListView.setAdapter(mysBaseAdapter);
} else {
mysBaseAdapter.notifyDataSetChanged();
}
// 消失进度
onLoad();
}});
}
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 ("tweet".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());
}
break;
case XmlPullParser.END_TAG:
if ("tweet".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("刚刚");
}
}