解析xml并展示数据(fragment)

package com.bwie.fragment;

import java.util.ArrayList;
import java.util.List;

import com.bwie.adapter.MyDataAdapter;
import com.bwie.adapter.MyDataAdapter_1;
import com.bwie.fuxi_06a.R;
import com.bwie.vo.XmlBean;
import com.bwie.vo.XmlBean.News;
import com.bwie.vo.XmlBean_1;
import com.bwie.vo.XmlBean_1.Blog;
import com.bwie.xlistview.XListView;
import com.bwie.xlistview.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;
import com.thoughtworks.xstream.XStream;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class MyFragment extends Fragment implements IXListViewListener {

    private String URL = "http://www.oschina.net/action/api/news_list";
    private String URL_1 = "http://www.oschina.net/action/api/blog_list";
    private ArrayList<News> dlist = new ArrayList<News>();
    private ArrayList<Blog> dlist_1 = new ArrayList<Blog>();
    private XListView lv;
    private int REFRESH = 0;
    private int LOAD = 1;
    private int load_p = 1;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        // 填充布局
        View view = inflater.inflate(R.layout.fragment, null);
        lv = (XListView) view.findViewById(R.id.lv);
        // 为listiview 控件设置上拉
        lv.setPullLoadEnable(true);
        // 设置监听事件
        lv.setXListViewListener(this);

        // 获取传来的值
        Bundle b = getArguments();
        if (b != null) {
            String column = b.getString("column");

            if (column.equals("资讯") || column.equals("热点")) {
                // 请求网络数据
                reqData(column, 1, REFRESH, URL);
            }

            if (column.equals("博客") || column.equals("推荐")) {
                // 请求网络数据
                reqData(column, 1, REFRESH, URL_1);
            }
        }

        return view;
    }

    private void reqData(final String column, int pageIndex, final int p,
            String url) {

        HttpUtils utils = new HttpUtils();

        StringBuffer sb = new StringBuffer(url);
        if (column.equals("资讯")) {
            sb.append("?pageIndex=" + pageIndex);
        }
        if (column.equals("热点")) {

            sb.append("?pageIndex=" + pageIndex);
            sb.append("&show=week");
        }
        if (column.equals("博客")) {

            sb.append("?type=latest");
            sb.append("&pageIndex=" + pageIndex);
        }
        if (column.equals("推荐")) {

            sb.append("?type=recommend");
            sb.append("&pageIndex=" + pageIndex);
        }
        utils.send(HttpMethod.GET, sb.toString(),
                new RequestCallBack<String>() {

                    @Override
                    public void onFailure(HttpException arg0, String arg1) {
                        // TODO Auto-generated method stub

                    }

                    @Override
                    public void onSuccess(ResponseInfo<String> arg0) {

                        // 获取响应的数据
                        String result = arg0.result;
                        XStream xStream = new XStream();
                         
                        if (column.equals("资讯") || column.equals("热点")) {
                            // 进行解析xml
                        
                            xStream.processAnnotations(XmlBean.class);
                            XmlBean fromXML = (XmlBean) xStream.fromXML(result);
                            List<News> news = fromXML.newslist.news;

                            if (p == REFRESH)// 正在刷新数据
                            {
                                dlist.addAll(0, news);
                            } else {
                                dlist.addAll(news);
                            }
                            // 为listview设置适配器
                            lv.setAdapter(new MyDataAdapter(getActivity(),
                                    dlist));
                            // 取消刷新
                            onLoad();
                        } else {
                            // 进行解析xml

                            xStream.processAnnotations(XmlBean_1.class);
                            XmlBean_1 fromXML = (XmlBean_1) xStream
                                    .fromXML(result);
                            List<Blog> blog = fromXML.blogs.blog;

                            if (p == REFRESH)// 正在刷新数据
                            {
                                dlist_1.addAll(0, blog);
                            } else {
                                dlist_1.addAll(blog);
                            }
                            // 为listview设置适配器
                            lv.setAdapter(new MyDataAdapter_1(getActivity(),
                                    dlist_1));
                            // 取消刷新
                            onLoad();

                        }

                    }
                });

    }

    @Override
    public void onRefresh() {

        // 重新请求数据
        reqData("资讯", 1, REFRESH,URL);
        reqData("热点", 1, REFRESH,URL);
        reqData("博客", 1, REFRESH,URL_1);
        reqData("推荐", 1, REFRESH,URL_1);
    }

    @Override
    public void onLoadMore() {

        load_p++;

        // 重新请求数据
        reqData("资讯", load_p, LOAD,URL);
        reqData("热点", load_p, LOAD,URL);
        reqData("博客", load_p, LOAD,URL_1);
        reqData("推荐", load_p, LOAD,URL_1);

    }

    /** 停止刷新, */
    private void onLoad() {
        lv.stopRefresh();
        lv.stopLoadMore();
        lv.setRefreshTime("刚刚");
    }

}
原文地址:https://www.cnblogs.com/8023-itxinde/p/5356919.html