您的位置:首页 > 其它

XmlPull解析

2016-03-08 12:02 204 查看
package com.example.adminis

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
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 android.widget.ListView;

import com.example.VO.News;
import com.example.adapter.MyAdapter;
import com.example.administrator.zhangxinyuekao.MainActivity;
import com.example.administrator.zhangxinyuekao.R;
import com.example.administrator.zhangxinyuekao.reflush.XListView;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.RequestParams;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

/**
* Created by Administrator on 2016/3/8.
*/
public class OneFragment extends Fragment implements XListView.IXListViewListener{
private  View view;
private XListView lv;
private List<News> list;
private MyAdapter adapter;
int page=10;
int size=10;
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
if (msg.what==1){
//                adapter = new MyAdapter(getActivity(),list);
//                lv.setAdapter(adapter);

}

super.handleMessage(msg);
}
};

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view=View.inflate(getActivity(), R.layout.fragment_one,null);
initialize();
//设置XListView支持加载
lv.setPullRefreshEnable(true);
lv.setPullLoadEnable(true);
lv.setXListViewListener(this);

return view;
}

private void initialize() {

lv = (XListView) view.findViewById(R.id.xlv);

init(page,size);

}

private void init(final int size, final int page) {
new Thread(new Runnable() {
@Override
public void run() {
final HttpUtils httpUtils=new HttpUtils();
final RequestParams params = new RequestParams();
params.addBodyParameter("catalog", "1");
params.addBodyParameter("pageIndex", ""+page);
params.addBodyParameter("pageSize", ""+size);

httpUtils.send(HttpRequest.HttpMethod.POST, "       ",params, new RequestCallBack<String>() {
@Override
public void onSuccess(ResponseInfo<String> responseInfo) {
String str=responseInfo.result;

Log.d("OneFragment","---------"+ str.toString());
ByteArrayInputStream is=new ByteArrayInputStream(str.getBytes());
try {
list=pullParseXml(is);
Log.d("OneFragment", list.toString());

handler.sendMessage(handler.obtainMessage(1,list));
} catch (Exception e) {
e.printStackTrace();
}

}

@Override
public void onFailure(HttpException e, String s) {

}
});
}
}).start();

}

//pull解析xml
public List<News> pullParseXml(InputStream is) throws Exception {
List<News> lists = null;
News student = null;
XmlPullParserFactory factory=XmlPullParserFactory.newInstance();
XmlPullParser parser = factory.newPullParser(); // 由android.util.Xml创建一个XmlPullParser实例

parser.setInput(is, "utf-8");// 对数据进行解析前的处理,预先设置好

int enventType = parser.getEventType();// 触发解析事件的进行,得到第一个解析事件的类型
String tagName = "";
while (enventType != XmlPullParser.END_DOCUMENT) {
switch (enventType) {
case XmlPullParser.START_DOCUMENT:
System.out.println("文档解析开始");

break;

case XmlPullParser.START_TAG:
tagName = parser.getName();// 得到标签名
Log.i("aaa", "标签元素解析开始,当前标签名:" + tagName);
if ("newslist".equals(tagName)) {
lists = new ArrayList<News>();
}
if ("news".equals(tagName)) {
student = new News();
}
break;
case XmlPullParser.TEXT:
String text = parser.getText();// 得到文本标签的值
Log.i("aaa", "文本解析开始,当前值:" + text);
if ("id".equals(tagName)) {
student.setId(text);
} else if ("title".equals(tagName)) {
student.setTitle(text);
} else if ("body".equals(tagName)) {
student.setBody(text);
} else if ("pubDate".equals(tagName)) {
student.setPubDate(text);
}
break;
case XmlPullParser.END_TAG:
tagName = parser.getName();
if ("news".equals(tagName)) {
lists.add(student);
student = null;
}
tagName = "";
break;

case XmlPullParser.END_DOCUMENT:
break;
}
// 触发下一个解析事件(解析标签还是文本)
enventType=parser.next();
}
return lists;
}

@Override
public void onRefresh() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
list.clear();
init(size , page += 1);
adapter.notifyDataSetChanged();
lv.setRefreshTime("刚刚");
lv.stopRefresh();
}
},2000);
}

@Override
public void onLoadMore() {
handler.postDelayed(new Runnable() {
@Override
public void run() {

init(size+=5,page);
adapter.notifyDataSetChanged();

lv.stopLoadMore();
}
},2000);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: