使用httputils进行网络请求上拉加载
2016-07-29 11:34
204 查看
public class FragmentOne extends Fragment implements IXListViewListener {
private XListView xlv;
private int index;
private String path;
private List<Bean1> list = new ArrayList<Bean1>();
private boolean isRefresh = false;
private MyAdpter my;
public FragmentOne(String path) {
super();
this.path = path;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.one_main, container, false);
xlv = (XListView) view.findViewById(R.id.xlv);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
xlv.setPullLoadEnable(true);
xlv.setXListViewListener(this);
// 请求网络解析的方法
request();
super.onActivityCreated(savedInstanceState);
}
private void request() {
HttpUtils utils = new HttpUtils();
String mypath = path + "?catalog=1&pageIndex=" + index + "&pageSize=20";
utils.send(HttpMethod.GET, mypath, new RequestCallBack<String>() {
@Override
public void onFailure(HttpException arg0, String arg1) {
}
@Override
public void onSuccess(ResponseInfo<String> arg0) {
String result = arg0.result;
ByteArrayInputStream is = new ByteArrayInputStream(result.getBytes());
List<Bean1> slist = startXml(is);
if (isRefresh) {
list.clear();
}
list.addAll(slist);
if (my == null) {
my = new MyAdpter(getActivity(), list);
xlv.setAdapter(my);
} else {
my.notifyDataSetChanged();
}
// 消失进度
onLoad();
}
});
}
private Bean1 b;
public List<Bean1> startXml(InputStream is) {
List<Bean1> tlist = new ArrayList<Bean1>();
XmlPullParser pull = Xml.newPullParser();
try {
pull.setInput(is, "utf-8");
int eventType = pull.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
String name = pull.getName();
switch (eventType) {
case XmlPullParser.START_TAG:
if ("news".equals(name)) {
b = new Bean1();
} else if ("title".equals(name)) {
b.setTitle(pull.nextText());
} else if ("body".equals(name)) {
b.setBody(pull.nextText());
}
break;
case XmlPullParser.END_TAG:
if ("news".equals(name)) {
tlist.add(b);
b = null;
}
break;
}
eventType = pull.next();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return tlist;
}
@Override
public void onRefresh() {
index = 0;
isRefresh = true;
onLoad();
}
@Override
public void onLoadMore() {
index++;
isRefresh = false;
request();
}
protected void onLoad() {
xlv.stopRefresh();
xlv.stopLoadMore();
xlv.setRefreshTime("刚刚");
}
}
private XListView xlv;
private int index;
private String path;
private List<Bean1> list = new ArrayList<Bean1>();
private boolean isRefresh = false;
private MyAdpter my;
public FragmentOne(String path) {
super();
this.path = path;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.one_main, container, false);
xlv = (XListView) view.findViewById(R.id.xlv);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
xlv.setPullLoadEnable(true);
xlv.setXListViewListener(this);
// 请求网络解析的方法
request();
super.onActivityCreated(savedInstanceState);
}
private void request() {
HttpUtils utils = new HttpUtils();
String mypath = path + "?catalog=1&pageIndex=" + index + "&pageSize=20";
utils.send(HttpMethod.GET, mypath, new RequestCallBack<String>() {
@Override
public void onFailure(HttpException arg0, String arg1) {
}
@Override
public void onSuccess(ResponseInfo<String> arg0) {
String result = arg0.result;
ByteArrayInputStream is = new ByteArrayInputStream(result.getBytes());
List<Bean1> slist = startXml(is);
if (isRefresh) {
list.clear();
}
list.addAll(slist);
if (my == null) {
my = new MyAdpter(getActivity(), list);
xlv.setAdapter(my);
} else {
my.notifyDataSetChanged();
}
// 消失进度
onLoad();
}
});
}
private Bean1 b;
public List<Bean1> startXml(InputStream is) {
List<Bean1> tlist = new ArrayList<Bean1>();
XmlPullParser pull = Xml.newPullParser();
try {
pull.setInput(is, "utf-8");
int eventType = pull.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
String name = pull.getName();
switch (eventType) {
case XmlPullParser.START_TAG:
if ("news".equals(name)) {
b = new Bean1();
} else if ("title".equals(name)) {
b.setTitle(pull.nextText());
} else if ("body".equals(name)) {
b.setBody(pull.nextText());
}
break;
case XmlPullParser.END_TAG:
if ("news".equals(name)) {
tlist.add(b);
b = null;
}
break;
}
eventType = pull.next();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return tlist;
}
@Override
public void onRefresh() {
index = 0;
isRefresh = true;
onLoad();
}
@Override
public void onLoadMore() {
index++;
isRefresh = false;
request();
}
protected void onLoad() {
xlv.stopRefresh();
xlv.stopLoadMore();
xlv.setRefreshTime("刚刚");
}
}
相关文章推荐
- 使用Kotlin进行网络请求+Glide加载图片
- MAC环境使用Http模拟工具进行网络请求
- 使用Retrofit进行网络请求
- Android中使用Volley开源库进行Http网络请求(GET方式)
- iOS---对AFNetworking进行二次封装,使用单例单独处理网络请求数据
- iOS-使用NSURLConnection进行Http Get和Post请求网络数据
- Android开发之搜芽项目的图片加载问题(使用Volley进行网络图片加载)
- AndroidStudio下使用Retrofit进行网络请求
- IOS开发指南学习——使用MKNetworkKit进行网络请求
- Android开发笔记-使用Volley开源库进行Http网络请求(POST方式)
- iOS中使用block进行网络请求回调 - xuym
- Android中使用Volley开源库进行Http网络请求(GET方式)
- 请求网络图片缓存到本地 ,还有一些现成的图片加载框架的使用 Ace网络篇(一)
- 使用WebDriver进行网络请求抓取案例
- iOS中使用block进行网络请求回调 - xuym
- Android 网络:使用URLConnection提交请求,获取html代码加载WebView
- Android学习笔记:Andorid网络请求框架Volley的使用(中)--网络图片加载
- 使用Swift调用AFNetworking进行网络请求
- 在 JS 中使用 fetch 更加高效地进行网络请求
- xUtils中的HttpUtils请求网络数据和BitmapUtils加载网络图片