import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import me.maxwin.view.XListView;
import me.maxwin.view.XListView.IXListViewListener;
import com.bwie.test.R;
import com.bwie.test.adapter.MyAdapter1;
import com.bwie.test.bean.DataBean;
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.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 android.widget.Toast;
public class Fragment1 extends Fragment implements IXListViewListener {
private XListView xlistview;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment1, null);
xlistview = (XListView) view.findViewById(R.id.xlistview);
xlistview.setPullLoadEnable(true);
xlistview.setXListViewListener(this);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
// 请求数据
getData();
}
/**
* 请求数据
*/
private int index = 0;
private List<DataBean> mylist = new ArrayList<DataBean>();
private boolean isRefresh=false;
private MyAdapter1 myadapter1;
private void getData() {
String path = "http://www.oschina.net/action/api/news_list?catalog=1&pageIndex="
+ index + "&pageSize=20";
HttpUtils http = new HttpUtils();
http.send(HttpMethod.GET, path, new RequestCallBack<String>() {
@Override
public void onFailure(HttpException arg0, String arg1) {
Toast.makeText(getActivity(), "数据请求失败", 0).show();
}
@Override
public void onSuccess(ResponseInfo<String> info) {
// Toast.makeText(getActivity(), "数据请求成功", 0).show();
String result = info.result;
byte[] bytes = result.getBytes();
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
// 解析数据的方法
List<DataBean> parelist = pareXML(bais);
System.out.println(parelist.toString());
if(isRefresh){
mylist.clear();
}
mylist.addAll(parelist);
if(myadapter1==null){
myadapter1=new MyAdapter1(getActivity(),mylist);
// 为xlistview设置适配器
xlistview.setAdapter(myadapter1);
}else{
//刷新适配器
myadapter1.notifyDataSetChanged();
}
//调用停止刷新和加载的方法
onLoad();
}
});
}
private List<DataBean> pareXML(InputStream is) {
List<DataBean> datalist = null;
DataBean databean = null;
try {
// 创建一个解析器
XmlPullParser parser = Xml.newPullParser();
parser.setInput(is, "utf-8");
int eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
datalist = new ArrayList<DataBean>();
break;
case XmlPullParser.START_TAG:
// 得到子节点的名字
String name = parser.getName();
if ("news".equalsIgnoreCase(name)) {
databean = new DataBean();
} else if ("title".equalsIgnoreCase(name)) {
databean.setTitle(parser.nextText());
} else if ("body".equalsIgnoreCase(name)) {
databean.setBody(parser.nextText());
} else if ("author".equalsIgnoreCase(name)) {
databean.setAuthor(parser.nextText());
} else if ("commentCount".equalsIgnoreCase(name)) {
databean.setCommentCount(parser.nextText());
} else if ("pubDate".equalsIgnoreCase(name)) {
databean.setPubDate(parser.nextText());
}
break;
case XmlPullParser.END_TAG:
String name1 = parser.getName();
if ("news".equalsIgnoreCase(name1)) {
datalist.add(databean);
databean = null;
}
break;
}
// 得到下一个事件的事件类型
eventType = parser.next();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return datalist;
}
@Override
public void onRefresh() {
index=0;
isRefresh=true;
getData();
}
@Override
public void onLoadMore() {
index++;
isRefresh=false;
getData();
}
private void onLoad() {
xlistview.stopLoadMore();
xlistview.stopRefresh();
xlistview.setRefreshTime("刚刚");
}
}
2.fragment布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<me.maxwin.view.XListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/xlistview"
></me.maxwin.view.XListView>
</LinearLayout>
3.fragment关联布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/text_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp" />
<TextView
android:id="@+id/text_body"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/text_author"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="15sp" />
<TextView
android:id="@+id/text_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="25dp"
android:textSize="15sp" />
<TextView
android:id="@+id/text_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="25dp"
android:textSize="15sp" />
</LinearLayout>
</LinearLayout>