XListView

原创 2016年05月31日 21:39:04
package com.example.yuekao1.Fragment;

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

import org.xmlpull.v1.XmlPullParser;

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 com.example.yuekao1.Blogs;
import com.example.yuekao1.BlogsAdapter;
import com.example.yuekao1.R;
import com.example.yuekao1.utils.XListView;
import com.example.yuekao1.utils.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;

public class BoKeUIFragment extends Fragment implements IXListViewListener {
    private XListView lv;
    private BlogsAdapter adapter;
    private int pageIndex = 1;
    private ArrayList<Blogs> list = new ArrayList<Blogs>();
    private HttpUtils httpUtils;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment1, null);
        lv = (XListView) view.findViewById(R.id.lv);
        lv.setPullLoadEnable(true);
        lv.setPullRefreshEnable(true);
        lv.setXListViewListener(this);
        httpUtils = new HttpUtils();
        return view;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        String path = "http://www.oschina.net/action/api/blog_list?pageIndex="
                + pageIndex + "&pageSize=10";
        reguestData(path);
    }

    private void reguestData(String path) {
        httpUtils.send(HttpMethod.GET, path, new RequestCallBack<String>() {

            private Blogs blogs;
            ArrayList<Blogs> blogsList;

            @Override
            public void onFailure(HttpException arg0, String arg1) {

            }

            @Override
            public void onSuccess(ResponseInfo<String> arg0) {
                try {
                    String xml = arg0.result;
                    XmlPullParser newPullParser = Xml.newPullParser();
                    ByteArrayInputStream bais = new ByteArrayInputStream(xml
                            .getBytes());
                    newPullParser.setInput(bais, "utf-8");
                    int eventType = newPullParser.getEventType();
                    while (eventType != XmlPullParser.END_DOCUMENT) {
                        String name = newPullParser.getName();
                        switch (eventType) {
                        case XmlPullParser.START_DOCUMENT:
                            blogsList = new ArrayList<Blogs>();
                            break;
                        case XmlPullParser.START_TAG:
                            if ("blog".equals(name)) {
                                blogs = new Blogs();
                            } else if ("title".equals(name)) {
                                blogs.setTitle(newPullParser.nextText());
                            } else if ("body".equals(name)) {
                                blogs.setBody(newPullParser.nextText());
                            } else if ("commentCount".equals(name)) {
                                blogs.setCommentCount(newPullParser.nextText());
                            } else if ("authorname".equals(name)) {
                                blogs.setAuthorname(newPullParser.nextText());
                            } else if ("pubDate".equals(name)) {
                                blogs.setPubDate(newPullParser.nextText());
                            }
                            break;
                        case XmlPullParser.END_TAG:
                            if ("blog".equals(name)) {
                                blogsList.add(blogs);
                                blogs = null;
                            }
                            break;
                        }
                        eventType = newPullParser.next();
                    }
                    list.addAll(blogsList);
                    if (adapter == null) {
                        adapter = new BlogsAdapter(list, getActivity());
                        lv.setAdapter(adapter);
                    } else {
                        adapter.notifyDataSetChanged();
                    }
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        });
    }

    @Override
    public void onRefresh() {
        list.clear();
        pageIndex = 1;
        String path = "http://www.oschina.net/action/api/blog_list?pageIndex="
                + pageIndex + "&pageSize=10";
        reguestData(path);
        onLoad();
    }

    private void onLoad() {
        lv.stopRefresh();
        lv.stopLoadMore();
        lv.setRefreshTime("�ո�");
    }

    @Override
    public void onLoadMore() {
        pageIndex += 1;
        String path = "http://www.oschina.net/action/api/blog_list?pageIndex="
                + pageIndex + "&pageSize=10";
        reguestData(path);
        onLoad();
    }

    @Override
    public void onPause() {
        adapter = null;
        super.onPause();
    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android XListView 如何实现 自动下拉刷新

XListView是个挺不错的android上拉刷新,下拉加载更多的ListView。现在项目中实现了其上拉下拉功能。现在有个新的需求,就是进入到页面中的时候,需要其自动下拉刷新,从而去获取相对应的数...

xListView上拉加载下拉刷新

本文章仅给出自定义的listview和时间格式转换的方法,适配器和测试类大家可根据情况编写

XListView实现原理讲解及分析 (下拉刷新,上拉加载)

XListview是一个非常受欢迎的下拉刷新控件,但是已经停止维护了。之前写过一篇XListview的使用介绍,用起来非常简单,这两天放假无聊,研究了下XListview的实现原理,学到了很多,今天分...

XListView上拉加载,下拉刷新

一、导library 二、配权限 三、代码package com.mynews.fragment;import java.text.SimpleDateFormat; import java.u...

上拉下拉刷新XListView

分页服务端代码工具类public class PageUtil { private int pageSize;// 每页多少条数据 private int recordCount; //...

[zip文件] 感觉比xListview、xScrollView好用的一个上拉加载

感觉比xListview、xScrollView好用的一个上拉加载,下拉刷新demo。因为这个demo是可以针对多种子view,一个控件就可以搞定多个布局的刷新加载功能,不像xList等等,都需要对应...

XListView上拉刷新,下拉加载

先写三个类,分别是自定义的XListView,XListViewHeader,XListViewFooter 1.XListView/** * @file XListView.java * @p...

Android中ListView(下拉刷新、上拉载入更多)的示例-XListView控件实现

该示例使用的github上的一个开源控件XListView,作者:Maxwin-z,源码地址:https://github.com/Maxwin-z/XListView-Android 测试ac...

Android第三方框架之xListView的使用方法

 Android第三方框架之xListView的使用方法 时间:2015-01-30 14:03来源:www.chengxuyuans.com 点击: 351 ==最近向用xListV...

XListView之网络数据展示

public class Zhou7 extends Fragment implements XListView.IXListViewListener { @Nullable priv...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)