说明:此项目实在fragment中的,需要依赖library完成,还用到了Xuitls.jar包、使用了Pull解析XML

eclipse中的项目:

//注意:此刷新功能是使用的第三方的PullToRefreshScrollView,因此需要导入第三方library作为依赖

步骤:导入第三方library,依赖:点击你的应用程序右击,再点击properties,再点击Android,再点击add,选中library,点击OK

//请求网路需要配置完网络权限   <uses-permission android:name="android.permission.INTERNET"/>

Android Studio中的项目:导入library,并依赖

导入:点击File,New——>import Module 打开libray的位置,选中libray ,点击OK

依赖:点击Android studio工具栏中的有多个小方块的那个,再点击 app,再点击Dependencies,再点击+符号,再点击Module dependency,选中libray,点击OK,依赖成功

//------------------------------主布局文件-----------------------------------------

注意:高度为match_parent或fill_parent不能为wrap_content,为wrap_content时不显示数据,这个为什么我也不知道,请求大神指教。

<com.handmark.pulltorefresh.library.PullToRefreshListView
        android:layout_width="fill_parent"        
        android:layout_height="match_parent"
        android:id="@+id/lv_list"></com.handmark.pulltorefresh.library.PullToRefreshListView>

//------------------------------------------------------------

package com.bwie.test.fragment;

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

import me.XListView;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import com.bwie.test.R;
import com.bwie.test.adapter.MyAdapter;
import com.bwie.test.bean.News;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode;
import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
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.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
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 android.widget.Toast;

public class Fragment2 extends Fragment{
    
    private List<News> news=new ArrayList<News>();
    private MyAdapter adapter;
    //设置页数、分页加载
    private int ye=1;
    private PullToRefreshListView lv;

//使用Handler更新UI
    private Handler handler=new Handler(){
        public void handleMessage(Message msg) {
            switch (msg.what) {
            case 0:    
                //获得请求的网络数据
                String text=(String) msg.obj;
                //解析XML
                toXml(text);
                break;

default:
                break;
            }
        }        
    };
    
    //解析XML
    private void toXml(String text) {
        News newss=null;
        try {                                
            //将读取到的结果码   添加到XML里面
            XmlPullParser Parser = Xml.newPullParser();
            ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(text.getBytes());
            Parser.setInput(byteArrayInputStream, "utf-8");
            //通过parse获得项目类型      相当于文件里面的属性吧
            int eventType = Parser.getEventType();
            //判断
            while ((eventType != XmlPullParser.END_DOCUMENT)) {
                String name = Parser.getName();
                switch (eventType) {
                case XmlPullParser.START_TAG:
                    if (name.equals("news")) {
                        newss = new News();
                    } else if (name.equals("id")) {
                        String id = Parser.nextText();
                        newss.setId(id);
                    } else if (name.equals("title")) {
                        String title = Parser.nextText();
                        newss.setTitle(title);
                    } else if (name.equals("body")) {
                        String body = Parser.nextText();
                        newss.setBody(body);
                    } else if (name.equals("commentCount")) {
                        String commentCount = Parser.nextText();
                        newss.setCommentCount(commentCount);
                    }
                    else if (name.equals("author")) {
                        String author = Parser.nextText();
                        newss.setAuthor(author);
                    }
                    else if (name.equals("pubDate")) {
                        String pubDate = Parser.nextText();
                        newss.setPubDate(pubDate);
                    }
                    break;
                    case XmlPullParser.END_TAG:
                        if (name.equals("news")) {
                           news.add(newss);
                           
                         //更新适配器
                           if (adapter == null) {
                                adapter = new MyAdapter(news,getActivity());
                                     lv.setAdapter(adapter);
                               } else {
                               adapter .notifyDataSetChanged();
                              }
                            
                        }
                        break;
                default:
                    break;
                }
                eventType=Parser.next();
            }
        } catch (XmlPullParserException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
    };
    
//-------------------onCreateView------------------    
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.fragment_item2, null);
        //找到控件
        lv=(PullToRefreshListView) view.findViewById(R.id.lv);
        //获得网络数据
        huodeshuju(ye);
        //设置适配器
        adapter = new MyAdapter(news, getActivity());
        lv.setAdapter(adapter);
        //设置PullToRefreshListView的模式——BOTH时,为可以上拉加载、可以下拉刷新
        lv.setMode(Mode.BOTH);
        //两个方法一样
        //lv.setMode(PullToRefreshBase.Mode.BOTH);
        
        /*lv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2() {

@Override
            public void onPullDownToRefresh(PullToRefreshBase refreshView) {
                // TODO Auto-generated method stub
                
            }

@Override
            public void onPullUpToRefresh(PullToRefreshBase refreshView) {
                // TODO Auto-generated method stub
                
            }
        });*/
        //设置刷新的监听
        lv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
            @Override//下拉刷新
            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
                //重新定义为第一页
                ye=1;
                Toast.makeText(getActivity(),""+ye,Toast.LENGTH_SHORT).show();
               //获得数据
             huodeshuju(ye);
                //刷新适配器
                adapter.notifyDataSetChanged();
                //创建一个方法结束刷新
                new FinishRefresh().execute();
            }

@Override//上拉加载更多
            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
             //使页数加1
                ye++;
                Toast.makeText(getActivity(),""+ye,Toast.LENGTH_SHORT).show();
                huodeshuju(ye);
                adapter.notifyDataSetChanged();
                new FinishRefresh().execute();
            }
        });
        
        
        return view;
    }
    
//------------获得网络数据----------------------
    //使用Xuitls.jar包
    private void huodeshuju(int ye) {
        //创建httpUtils
        HttpUtils httpUtils=new HttpUtils();
        httpUtils.send(HttpMethod.GET, "http://www.oschina.net/action/api/news_list?catalog=1&pageIndex="+ye+"&pageSize=20", new RequestCallBack<String>() {

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

@Override//请求成功
            public void onSuccess(ResponseInfo<String> arg0) {
                String str=arg0.result;
                Log.i("数据", str);
                Message message=new Message();
                message.what=0;
                message.obj=str;
                handler.sendMessage(message);
                
            }
        });
        
    }
//-------------------
    
    //完成刷新的方法
    private class FinishRefresh extends AsyncTask<Void, Void, Void> {
        @Override
        protected Void doInBackground(Void... params) {

try {
            //停留2秒
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

return null;
        }

@Override
        protected void onPostExecute(Void result){
            //刷新完成
            lv.onRefreshComplete();
        }
    }

}

PullToRefreshListView上拉加载、下拉刷新 eclipse项目的更多相关文章

  1. Vue mint ui用在消息页面上拉加载下拉刷新loadmore 标记

    之前总结过一个页面存在多个下拉加载的处理方式,今天再来说一下在消息页面的上拉加载和下拉刷新,基本上每个app都会有消息页面,会遇到这个需求 需求:每次加载十条数据,上拉加载下拉刷新,并且没有点击查看过 ...

  2. 上拉加载下拉刷新控件WaterRefreshLoadMoreView

    上拉加载下拉刷新控件WaterRefreshLoadMoreView 效果: 源码: // // SRSlimeView // @author SR // Modified by JunHan on ...

  3. RecyclerView 上拉加载下拉刷新

    RecyclerView 上拉加载下拉刷新 <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/teach_s ...

  4. APICloud上啦加载下拉刷新模块

    apicloud有自带的上啦加载下拉刷新,当让也可以用第三方或者在模块库里面找一个使用 一.下拉刷新,一下代码写在 apiready = function (){} 里面 apiready = fun ...

  5. 微信小程序上拉加载下拉刷新

    微信小程序实现上拉加载下拉刷新 使用小程序默认提供方法. (1). 在xxx.json 中开启下拉刷新,需要设置backgroundColor,或者是backgroundTextStyle ,因为加载 ...

  6. mui scroll和上拉加载/下拉刷新

    mui中 scroll和上拉加载/下拉刷新同时存在会出现两个滚动条 把/*   */ /* //mui页面鼠标拖动代码: mui('.mui-scroll-wrapper').scroll({ dec ...

  7. SwipeRefreshLayout实现上拉加载下拉刷新

    package com.example.swiperefreshlayoutdemo; import java.util.ArrayList;import java.util.HashMap; imp ...

  8. MJRefresh(上拉加载下拉刷新)

    整理自:https://github.com/CoderMJLee/MJRefresh#%E6%94%AF%E6%8C%81%E5%93%AA%E4%BA%9B%E6%8E%A7%E4%BB%B6%E ...

  9. Flutter上拉加载下拉刷新---flutter_easyrefresh

    前言 Flutter默认不支持上拉加载,下拉刷新也仅仅支持Material的一种样式.Android开发使用过SmartRefreshLayout的小伙伴都知道这是一个强大的刷新UI库,集成了很多出色 ...

  10. 利用iscroll实现上拉加载下拉刷新

    1.首先引用isScroll插件 说明:页面加载时初始化isScroll,然后调用pullDownAction()和pullUpAction(),每次切换tab时,只需要对pullDownAction ...

随机推荐

  1. kettle连接Hbase中数据导出(7)

    http://wiki.pentaho.com/display/BAD/Extracting+Data+from+HBase+to+Load+an+RDBMS 1)新建转换——Big Data——Hb ...

  2. MySQL聚簇索引

    聚簇索引并不是一种单独的索引类型,而是一种数据存储方式.具体的细节依赖于其实现方式,但innoddb 的聚簇索引实际上在同一个结构中保存了B-Tree索引和数据行. 当表有聚簇索引时,它的数据实际上存 ...

  3. 大数据除法(Large data division)

    题目描述 Description 除法是计算中的基础运算,虽然规则简单,但是位数太多了,也难免会出错.现在的问题是:给定任意位数(足够大就可以啦O(∩_∩)O)的一个被除数,再给定一个long lon ...

  4. 局域网iis添加主机头

    局域网上用主机头访问不像外网,直接设置主机头就行了, 在局域网设置了主机头还要修改host文件 打开host快捷的方法: win7在win+r运行里面运行C:\Windows\System32\dri ...

  5. onbeforeunload与a标签在IE中的冲突bug(转载)

    onbeforeunload与a标签在IE中的冲突bug   onbeforeunload 是window的一个事件,目前Firefox,IE都支持,主要用来提示用户是否真的要离开该页面,通常在一些比 ...

  6. Ajax.BeginForm 异步上传附件 替代方案

      一:问题描述 含有文件信息表单内容,想通过异步上传到服务器,但是使用Ajax.BeginForm上传时,后台无法获取文件信息 二:解决方案 通过  $.ajaxFileUpload 可以实现文件及 ...

  7. iOS 打电话、发短信、发邮件功能

    打电话 方法1 最简单最直接的方式:直接跳到拨号界面 NSURL *url = [NSURL URLWithString:@"tel://10010"]; [[UIApplicat ...

  8. PMP培训感想

      终于等到了C打头的邮件,等了几个星期,悬着的心终于放了.1P4M,基本跟平时模块成绩一致.当初模考时,第一次考了126,还算比较满意,毕竟还没开始苦逼看嘛,悲剧的是不管后面再怎么努力,成绩始终在1 ...

  9. 数据库文件导入导出操作,以及赋予权限SQL语句

    1.导出数据库xxxx和tlog(经过测试,没有问题)# /data/mysql/bin/mysqldump -u root -ppassword qq9x | gzip > /home/xxx ...

  10. HDU - 1045 Fire Net(二分匹配)

    Description Suppose that we have a square city with straight streets. A map of a city is a square bo ...