package com.bwie.test;
import adapter.Myadapter;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.util.Xml;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import org.com.cctest.view.XListView;
import org.com.cctest.view.XListView.IXListViewListener;
import org.xmlpull.v1.XmlPullParser;
import vo.News;
import com.google.gson.Gson;
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;
import android.content.Intent;
import android.content.res.XmlResourceParser;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.TextView;
public class f1 extends Fragment implements IXListViewListener {
String path="http://www.oschina.net/action/api/news_list?catalog=1&pageindex=1&pageSize=20";
String path2="http://www.oschina.net/action/api/news_list?catalog=1&pageindex=2&pageSize=20";
String path3="http://www.oschina.net/action/api/news_list?catalog=1&pageindex=3&pageSize=20";
List<News> list;
News data=new News();
Handler handler = new Handler() {
private Myadapter myAdapter;
@SuppressWarnings("unchecked")
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
// 加载初始化数据
case 1:
list = (List<News>) msg.obj;
myAdapter = new Myadapter(getActivity(), list);
xlistView.setAdapter(myAdapter);
// loadOver();
break;
// 刷新
case 2:
list.clear();
for (News dataBean : (List<News>)msg.obj) {
//象开头添加
list.add(dataBean);
}
// 刷新适配器
myAdapter.notifyDataSetChanged();
loadOver();
break;
// 加载更多
case 3:
for (News dataBean : (List<News>)msg.obj) {
//象结尾添加
list.add(dataBean);
}
// 刷新适配器
myAdapter.notifyDataSetChanged();
loadOver();
break;
}
};
};
private XListView xlistView;
private View contextView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
contextView = View.inflate(getActivity() ,R.layout.itemfragment, null);
//找到控件
initview(contextView);
//解析
getData(1,path);
return contextView;
}
private void initview(View contextView) {
xlistView = (XListView) contextView.findViewById(R.id.xlistView);
// 下拉刷新是否激活
xlistView.setPullRefreshEnable(true);
// 加载更多是否激活
xlistView.setPullLoadEnable(true);
// xlistView刷新和加载更多的监听
xlistView.setXListViewListener(this);
xlistView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
}
});
}
// 停止加载更多/刷新
public void loadOver() {
// 停止加载更多
xlistView.stopLoadMore();
// 停止刷新
xlistView.stopRefresh();
//设置刷新时的时间
xlistView.setRefreshTime(getTime());
}
public void getData(final int i, String path) {
HttpUtils httpUtils = new HttpUtils();
httpUtils.configCurrentHttpCacheExpiry(0);
httpUtils.send(HttpMethod.GET, path, new RequestCallBack<String>() {
@Override
public void onFailure(HttpException arg0, String arg1) {
}
@Override
public void onSuccess(ResponseInfo<String> arg0) {
String result = arg0.result;
Log.e("result", result);
ByteArrayInputStream arrayInputStream=new ByteArrayInputStream(result.getBytes());
getstr(arrayInputStream) ;
Message msg = Message.obtain();
msg.obj = list;
msg.what = i;
handler.sendMessage(msg);
}
});
}
public void getstr(InputStream is) {
try {
XmlPullParser xmlParser = Xml.newPullParser();
xmlParser.setInput(is, "utf-8");
int eventType = xmlParser.getEventType();
while (eventType != XmlResourceParser.END_DOCUMENT) {
String tagName = xmlParser.getName();
switch (eventType) {
case XmlResourceParser.START_DOCUMENT:
list = new ArrayList<News>();
break;
case XmlResourceParser.START_TAG:
if ("news".equalsIgnoreCase(tagName)) {
data= new News();
} else if ("title".equals(tagName)) {
data.title=xmlParser.nextText();
} else if ("pubDate".equals(tagName)) {
data.pubDate=xmlParser.nextText();
} else if ("author".equals(tagName)) {
data.author=xmlParser.nextText();
} else if ("body".equals(tagName)) {
data.body=xmlParser.nextText();
}
break;
case XmlResourceParser.END_TAG:
if ("news".equalsIgnoreCase(tagName)) {
list.add(data);
data = null;
}
break;
}
eventType = xmlParser.next();
}
} catch (Exception e) {
e.printStackTrace();
}
Log.e("list", list.toString());
}
/**
* 刷新
*/
@Override
public void onRefresh() {
getData(2,path2);
}
/**
* 加载更多
*/
@Override
public void onLoadMore() {
getData(3,path3);
loadOver();
}
public String getTime() {
SimpleDateFormat format = new SimpleDateFormat("hh:mm:ss");
Date date = new Date();
String time = format.format(date);
return time;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
}
import adapter.Myadapter;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.util.Xml;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import org.com.cctest.view.XListView;
import org.com.cctest.view.XListView.IXListViewListener;
import org.xmlpull.v1.XmlPullParser;
import vo.News;
import com.google.gson.Gson;
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;
import android.content.Intent;
import android.content.res.XmlResourceParser;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.TextView;
public class f1 extends Fragment implements IXListViewListener {
String path="http://www.oschina.net/action/api/news_list?catalog=1&pageindex=1&pageSize=20";
String path2="http://www.oschina.net/action/api/news_list?catalog=1&pageindex=2&pageSize=20";
String path3="http://www.oschina.net/action/api/news_list?catalog=1&pageindex=3&pageSize=20";
List<News> list;
News data=new News();
Handler handler = new Handler() {
private Myadapter myAdapter;
@SuppressWarnings("unchecked")
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
// 加载初始化数据
case 1:
list = (List<News>) msg.obj;
myAdapter = new Myadapter(getActivity(), list);
xlistView.setAdapter(myAdapter);
// loadOver();
break;
// 刷新
case 2:
list.clear();
for (News dataBean : (List<News>)msg.obj) {
//象开头添加
list.add(dataBean);
}
// 刷新适配器
myAdapter.notifyDataSetChanged();
loadOver();
break;
// 加载更多
case 3:
for (News dataBean : (List<News>)msg.obj) {
//象结尾添加
list.add(dataBean);
}
// 刷新适配器
myAdapter.notifyDataSetChanged();
loadOver();
break;
}
};
};
private XListView xlistView;
private View contextView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
contextView = View.inflate(getActivity() ,R.layout.itemfragment, null);
//找到控件
initview(contextView);
//解析
getData(1,path);
return contextView;
}
private void initview(View contextView) {
xlistView = (XListView) contextView.findViewById(R.id.xlistView);
// 下拉刷新是否激活
xlistView.setPullRefreshEnable(true);
// 加载更多是否激活
xlistView.setPullLoadEnable(true);
// xlistView刷新和加载更多的监听
xlistView.setXListViewListener(this);
xlistView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
}
});
}
// 停止加载更多/刷新
public void loadOver() {
// 停止加载更多
xlistView.stopLoadMore();
// 停止刷新
xlistView.stopRefresh();
//设置刷新时的时间
xlistView.setRefreshTime(getTime());
}
public void getData(final int i, String path) {
HttpUtils httpUtils = new HttpUtils();
httpUtils.configCurrentHttpCacheExpiry(0);
httpUtils.send(HttpMethod.GET, path, new RequestCallBack<String>() {
@Override
public void onFailure(HttpException arg0, String arg1) {
}
@Override
public void onSuccess(ResponseInfo<String> arg0) {
String result = arg0.result;
Log.e("result", result);
ByteArrayInputStream arrayInputStream=new ByteArrayInputStream(result.getBytes());
getstr(arrayInputStream) ;
Message msg = Message.obtain();
msg.obj = list;
msg.what = i;
handler.sendMessage(msg);
}
});
}
public void getstr(InputStream is) {
try {
XmlPullParser xmlParser = Xml.newPullParser();
xmlParser.setInput(is, "utf-8");
int eventType = xmlParser.getEventType();
while (eventType != XmlResourceParser.END_DOCUMENT) {
String tagName = xmlParser.getName();
switch (eventType) {
case XmlResourceParser.START_DOCUMENT:
list = new ArrayList<News>();
break;
case XmlResourceParser.START_TAG:
if ("news".equalsIgnoreCase(tagName)) {
data= new News();
} else if ("title".equals(tagName)) {
data.title=xmlParser.nextText();
} else if ("pubDate".equals(tagName)) {
data.pubDate=xmlParser.nextText();
} else if ("author".equals(tagName)) {
data.author=xmlParser.nextText();
} else if ("body".equals(tagName)) {
data.body=xmlParser.nextText();
}
break;
case XmlResourceParser.END_TAG:
if ("news".equalsIgnoreCase(tagName)) {
list.add(data);
data = null;
}
break;
}
eventType = xmlParser.next();
}
} catch (Exception e) {
e.printStackTrace();
}
Log.e("list", list.toString());
}
/**
* 刷新
*/
@Override
public void onRefresh() {
getData(2,path2);
}
/**
* 加载更多
*/
@Override
public void onLoadMore() {
getData(3,path3);
loadOver();
}
public String getTime() {
SimpleDateFormat format = new SimpleDateFormat("hh:mm:ss");
Date date = new Date();
String time = format.format(date);
return time;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
}