查找是否滚动了ListView"完全"至底部?

时间:2015-06-13 07:46:33

标签: android android-listview android-scrollview

我想要什么

我想检测ListView是否已滚动"完全"至底部。通过单词"完全",我的意思是列表的最后一个元素应该是完全可见的。

我做了什么

这就是我所做的。

list.setOnScrollListener(new AbsListView.OnScrollListener() {
                    @Override
                    public void onScrollStateChanged(AbsListView view, int scrollState) {

                    }

                    @Override
                    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {

                        switch (view.getId()) {
                            case R.id.encList:

                                final int lastItem = firstVisibleItem + visibleItemCount;
                                if (lastItem == totalItemCount) {

                                    if (preLast != lastItem) { //to avoid multiple calls for last item
                                        Log.d("Log", "Last reached");
                                        preLast = lastItem;
                                    }
                                } else
                                    preLast = lastItem;
                        }

                    }
                });

问题

我的代码在某种程度上有效,但并不能提供我想要的确切结果。当最后一个元素可见时,会打印日志,但我希望只有在最后一个元素完全可见时才会打印它。

此代码需要进行哪些修改?

1 个答案:

答案 0 :(得分:3)

把这个

if (list.getLastVisiblePosition() ==
 list.getAdapter().getCount() -1 &&
 list.getChildAt(list.getChildCount() - 1).getBottom() <= list.getHeight()){
//Scrolled end
}
你的onScroll

中的