打造Android万能上拉下拉刷新框架--XRefreshView(三)

转载请注明出处:http://blog.csdn.net/footballclub/

打造Android万能上拉下拉刷新框架–XRefreshView(一)
打造Android万能上拉下拉刷新框架–XRefreshView(二)
让多种类型item的Recyclerview能够上拉和下拉刷新–XRefreshView

XRefreshView更新说明

这段时间一直有朋友给我反馈,让我帮忙解决问题,我汇总了下,有以下几种:
1. 处理listview滑动删除与XRefreshView的冲突
2. 处理viewpager和XRefreshView的冲突
3. listview滑动到底部自动加载更多
4. 刷新时,不让里面的listview上下滑动
5. 自定义headerview和footerview
6. 配置自定义头部广告位
除了广告位的都已经完成了。除此之外,我还对默认的header和footer做了ui上的优化,特别地,鉴于Recylerview的强大,我还针对Recylerview做了特别的适配,接下来先看效果图,在模拟器上录的,有点卡卡的。

效果图

效果图

更新详细

1.处理横向移动与XRefreshView的冲突

如果需要在手指横向移动的时候,让XRefreshView不拦截事件,

xRefreshView.setMoveForHorizontal(true);

可以调用setMoveForHorizontal并传入true即可。

2.滑动到底部自动加载更多

目前只做了Abslistview和Recylerview的

xRefreshView.setAutoLoadMore(false);

true会自动加载更多,false则相反。传入false的话,如果是listview,需要上拉才能加载更多,如果是Recylerview,则会需要点击才能加载更多。就像这样
点击加载更多
点击加载更多涉及到自定义footerview,到后面再说,这里先放着。

3.刷新时,不让里面的列表上下滑动

如果刷新时不想让里面的列表滑动,可以这么设置

xRefreshView.setPinnedContent(true);

4.支持按钮点击开始刷新

XRefreshView不仅支持手势下拉刷新,也支持按钮点击开始刷新,

xRefreshView.startRefresh();

可以在activity的onResume()中调用,也可以在按钮的点击事件中调用。

5.设置Abslistview和Recylerview的滚动监听事件

如果你有设置Abslistview和Recylerview滚动监听事件的需要的话,就不能直接使用Abslistview和Recylerview的setOnScrollListener方法了,因为为了实现自动加载更多的功能,监听已经被XRefreshView使用了,所以这时候需要使用XRefreshView提供的设置滚动监听的方法

    /**
     * 设置Abslistview的滚动监听事件
     * 
     * @param listener
     */
    public void setOnAbsListViewScrollListener(OnScrollListener scrollListener) {
        mContentView.setOnAbsListViewScrollListener(scrollListener);
    }

    /**
     * 设置Recylerview的滚动监听事件
     */
    public void setOnRecyclerViewScrollListener(
            RecyclerView.OnScrollListener scrollListener) {
        mContentView.setOnRecyclerViewScrollListener(scrollListener);
    }

6.设置加载更多

如果希望在加载更多数据的时候,能在没有新数据的时候,隐藏footerview的话,

new Handler().postDelayed(new Runnable() {
                    public void run() {
                        //模拟数据加载完成
                        if (mLoadCount >= 3) {
                            xRefreshView.setLoadComplete(true);
                        }
                        adapter.insert(new Person("More ", "21"),
                                adapter.getAdapterItemCount());
                        adapter.insert(new Person("More ", "21"),
                                adapter.getAdapterItemCount());
                        adapter.insert(new Person("More ", "21"),
                                adapter.getAdapterItemCount());
                        mLoadCount++;
                        //刷新完成必须调用此方法停止加载
                        xRefreshView.stopLoadMore();
                    }
                }, 1000);

当调用xRefreshView.setLoadComplete(true)以后,就会隐藏footerview;如果过段时间又有新的数据了,可以调用xRefreshView.setLoadComplete(false),这样就又可以正常加载更多了。

7.其他一些属性的设置

/**
     * 设置headerview回滚的时间,默认400毫秒
     * 
     * @param during
     */
    public void setScrollDuring(int during) {
        SCROLL_DURATION = during;
    }

    /**
     * 设置阻尼系数,建议使用默认的
     * 
     * @param ratio
    
  • 35
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 46
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 46
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值