RecycleView下拉刷新和加载另一种方式PtrClassicFrameLayout

leeo00 2017-08-17

PtrClassicFrameLayout和SwitchRefreshLayout是两种不同的刷新方式,根据项目实际要求去做

1.布局:

<in.srain.cube.views.ptr.PtrClassicFrameLayout
        android:id="@+id/mPtrClassicFrameLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <android.support.v7.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:scrollbars="vertical" />
    </in.srain.cube.views.ptr.PtrClassicFrameLayout>

 2.在build.gradle(app)添加包:

//下拉刷新框架
    compile 'in.srain.cube:ultra-ptr:1.0.11'

 3.代码:

其中:
app:ptr_resistance="1.7":设置下拉的阻尼系数,值越大感觉越难下拉
ptr_ratio_of_header_height_to_refresh:设置超过头部的多少时,释放可以执行刷新操作
ptr_duration_to_close:设置下拉回弹的时间
ptr_duration_to_close_header:设置刷新完成,头部回弹时间,注意和前一个进行区别
ptr_keep_header_when_refresh:设置刷新的时候是否保持头部
ptr_pull_to_fresh:设置下拉过程中执行刷新,我们一般设置为false
当然这几个参数的设置也可以通过代码去实现:

// the following are default settings  
mPtrFrame.setResistance(1.7f);  
mPtrFrame.setRatioOfHeaderHeightToRefresh(1.2f);  
mPtrFrame.setDurationToClose(200);  
mPtrFrame.setDurationToCloseHeader(1000);  
// default is false  
mPtrFrame.setPullToRefresh(false);  
// default is true  
mPtrFrame.setKeepHeaderWhenRefresh(true);

 实现刷新和加载更多效果:

/**
         * 上啦加载
         */
        mAdapter.setOnLoadMoreListener(new BaseQuickAdapter.RequestLoadMoreListener() {
            @Override
            public void onLoadMoreRequested() {
                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        getPresenter().getData();
                        mAdapter.setNewData(mList);
                        mAdapter.loadMoreComplete();
                        mAdapter.notifyDataSetChanged();
                    }
                }, 2000);
            }
        }, mRecyclerView);

        //下拉刷新
        mPtrClassicFrameLayoutFragment3.disableWhenHorizontalMove(true);
        mPtrClassicFrameLayoutFragment3.setPtrHandler(new PtrHandler() {
            @Override
            public boolean checkCanDoRefresh(PtrFrameLayout frame, View content, View header) {
                return PtrDefaultHandler.checkContentCanBePulledDown(frame, content, header);
            }

            @Override
            public void onRefreshBegin(PtrFrameLayout frame) {
                mList.clear();
                getPresenter().getData();
                mPtrClassicFrameLayoutFragment3.refreshComplete();
                mAdapter.notifyDataSetChanged();
            }
        });

 其中 getPresenter().getData();这个是获取数据,根据实际项目数据获取而改变

相关推荐

BeiHaiZuoPeng / 0评论 2011-10-18
huningjun / 0评论 2011-10-14