判断ListView到达顶端的方法

在写下拉刷新ListView时,需要用到判断ListView是否到达最顶端,进而判断是否开始滑动刷新,下面只是判断这一过程的核心方法:

/**
     * 判断第一个child是否完全显示出来
     * 
     * @return true完全显示出来,否则false
     */
    private boolean isFirstItemVisible() {
        final Adapter adapter = mListView.getAdapter();

        if (null == adapter || adapter.isEmpty()) {
            return true;
        }
        //第一个可见item在ListView中的位置
        if (mListView.getFirstVisiblePosition() == 0) {
            //getChildCount是当前屏幕可见范围内的count
            int mostTop = (getChildCount() > 0) ? mListView.getChildAt(0)
                    .getTop() : 0;
            if (mostTop >= 0) {
                return true;
            }
        }
        return false;
    }

我们首先用getFirstVisiblePosition()判断是否是ListView的第一个item,如果是,再用getChildCount().getTop()取到该item顶端到屏幕顶端的距离,如果为负的,说明该item还有一部分在屏幕顶端上方,并没有完全显示,此时应该继续下拉,不能刷新,即return false。如果>=0,说明,已经完全显示,开始下拉刷新逻辑。

经验分享 程序员 微信小程序 职场和发展