pullToRefresh集成SwipeMenuListview,RecyclerView

Andorid-PullToRefresh大家应该都非常的熟悉,是一个下拉刷新,上拉加载的控件。功能也是非常的强大,我们可以自定义各种动画。
SwipeMenuListview也是非常的常用,可以为你的listview添加侧滑菜单,功能也是很完善。
很多新人想使用侧滑和下拉刷新,上拉加载的时候会不知道怎么实现。其实把这两个控件集成一下也是很方便的。
首先我们来看看PullTorefreshListview,PullTorefreshScrollview ,PullTorefreshGridView.我们发现它们都继承了PullToRefreshBase,并且实现了getPullToRefreshScrollDirection,createRefreshableView,isReadyForPullEnd,isReadyForPullStart这四个方法。所以我们也可以自定义一个 PullToRefreshSwipeMenuListview,继承PullToRefreshBase,在getPullToRefreshScrollDirection方法中我们指定方向为竖向:

@Override
    public Orientation getPullToRefreshScrollDirection() {
        return Orientation.VERTICAL;
    }

然后在createRefreshableView方法中:

@Override
    protected SwipeMenuListView createRefreshableView(Context context, AttributeSet attrs) {
        listView = new SwipeMenuListView(context, attrs);
        return listView;
    }

我们new出一个SwipeMenuListView对象return就ok了。
还有两个方法isReadyForPullStart和isReadyForPullEnd。我们只要判断listview是否到达顶部或者底部就可以了。

@Override
    protected boolean isReadyForPullStart() {
    if(listView.getAdapter() == null || listView.getAdapter().getCount()==0){
            return true;
        }
        if (listView.getFirstVisiblePosition() == 0) {
            if (listView.getChildAt(0).getTop() >= getRefreshableView().getTop()) {
                return true;
            }
        }
        return false;
    }
@Override
    protected boolean isReadyForPullEnd() {
    if(listView.getAdapter() == null || listView.getAdapter().getCount()==0){
            return true;
        }
        int lastPos = listView.getAdapter().getCount() - 1;
        if (listView.getLastVisiblePosition() == lastPos) {
            int i = listView.getAdapter().getCount() - ((SwipeMenuListView) getRefreshableView()).getChildCount();
            if (listView.getChildAt(lastPos - i).getBottom() <= getRefreshableView().getBottom()) {
                return true;
            }
        }
        return false;
    }

这样简单就实现了侧滑 上拉下拉兼具的控件。你也可以根据这个自定义一个可以下拉上拉的Recyclerview,Recyclerview判断顶部item和底部item是否完全显示提供了非常好的方法。不需要自己去计算。
Recyclerview.getLayoutManager 有以下两个方法。
findFirstCompletelyVisibleItemPosition和findLastCompletelyVisibleItemPosition。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值