搬砖之路之pullToRefreshListView

一个伟大的人写的伟大的控件被一群现在不伟大以后也基本不会伟大但向往伟大的人深爱着!

唯一的小bug是在XML里不能写隐藏,否则的话在代码里让它显示是不会起作用的,pullToRefresh里包含很多控件,但使用最多的就是listview和狗日的view(gridview),使用方法基本一样,会一个也基本就都会了。

一、从网上找个依赖文件,网上有很多,他只能是依赖文件,不能是jar包

http://download.csdn.net/detail/li419360214/9570645

二、XML布局,除了名字不同,其他的和普通的listview一样

<com.handmark.pulltorefresh.library.PullToRefreshListView
        android:id="@+id/corps_listview"
        style="@style/w_match_h_match"
        android:layout_margin="@dimen/dp_15"
        android:layout_weight="1"
        android:divider="@color/bg_Black_Light_L_L_L"
        android:dividerHeight="1.5dp"
        android:horizontalSpacing="10dp"
        android:scrollbars="none"
        android:verticalSpacing="5dp" >
    </com.handmark.pulltorefresh.library.PullToRefreshListView>

三、配置

PullToRefreshListView pullToRefreshListView= (PullToRefreshListView) findViewById(R.id.list_view);  
mListView.setMode(Mode.BOTH);  

设置模式 mode;
Mode.BOTH:同时支持上拉下拉
Mode.PULL_FROM_START:只支持下拉Pulling Down
Mode.PULL_FROM_END:只支持上拉Pulling Up
注意;BOTH时,设置的Listener 得是OnRefreshListener2,其他的模式时OnRefreshListener就可以,别问为什么。。

//下拉刷新
pullToRefreshListView.setMode(Mode.BOTH);//设置模式、现在是可以上拉也可以下拉
pullToRefreshListView.getLoadingLayoutProxy(true, false).setLastUpdatedLabel("下拉刷新");//数据刷新前
pullToRefreshListView.getLoadingLayoutProxy(true, false).setPullLabel("");//数据刷新图标
pullToRefreshListView.getLoadingLayoutProxy(true, false).setRefreshingLabel("正在刷新");//数据刷新中
pullToRefreshListView.getLoadingLayoutProxy(true, false).setReleaseLabel("放开以刷新");//数据刷新后
// 上拉加载更多时的提示文本设置
pullToRefreshListView.getLoadingLayoutProxy(false, true).setLastUpdatedLabel("上拉加载");
pullToRefreshListView.getLoadingLayoutProxy(false, true).setPullLabel("");
pullToRefreshListView.getLoadingLayoutProxy(false, true).setRefreshingLabel("正在加载...");
pullToRefreshListView.getLoadingLayoutProxy(false, true).setReleaseLabel("放开以加载");

getLoadingLayoutProxy里的两个参数是选择上拉还是下拉的

/**
         *   设置下拉刷新和上拉加载时的 铃声(可有可无)
         */
        SoundPullEventListener<ListView> soundListener = new SoundPullEventListener<ListView>(this);
        soundListener.addSoundEvent(State.PULL_TO_REFRESH, R.raw.pull_event);
        soundListener.addSoundEvent(State.RESET, R.raw.reset_sound);
        soundListener.addSoundEvent(State.REFRESHING, R.raw.refreshing_sound);
        mPullRefreshListView.setOnPullEventListener(soundListener);

addSoundEvent里的参数是设置在某个状态时候的声音

四、使用

pullToRefreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2() {

                    // 下拉刷新
                    @Override
                    public void onPullDownToRefresh(
                            PullToRefreshBase refreshView) {
                        // PullUpToRefresh(0);
                        if (!UtilsNetWork.isConnected(getActivity())) {
                            showToast("请检查网络");
                        }
                        Recommend();//这个是加载数据的方法
                        new FinishRefresh().execute();//这个是告诉控件,让丫刷新
                    }

                    // 上拉加载
                    @Override
                    public void onPullUpToRefresh(PullToRefreshBase refreshView) {
                        if (!UtilsNetWork.isConnected(getActivity())) {
                            showToast("请检查网络");
                        }
                        PullUpToRefresh(1);//这个是加载数据的方法
                        new FinishRefresh().execute();//这个是告诉控件,让丫刷新
                    }
                });
    //这个方法基本上是固定的
    private class FinishRefresh extends AsyncTask<Void, Void, Void> {
    //这个方法是控制上拉火下拉的时候那些字啊图标什么的显示的时间,不设也可以
        @Override
        protected Void doInBackground(Void... params) {
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
            }
            return null;
        }
//通知控件数据刷新
        @Override
        protected void onPostExecute(Void aVoid) {
            pullToRefreshListView.onRefreshComplete();//告诉控件数据提交
            ad.notifyDataSetChanged();//适配器刷新,可以在获取更新数据的时候写,这里就只需要上门的那个方法了

        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值