我想要什么
我想检测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;
}
}
});
问题
我的代码在某种程度上有效,但并不能提供我想要的确切结果。当最后一个元素可见时,会打印日志,但我希望只有在最后一个元素完全可见时才会打印它。
此代码需要进行哪些修改?
答案 0 :(得分:3)
把这个
if (list.getLastVisiblePosition() ==
list.getAdapter().getCount() -1 &&
list.getChildAt(list.getChildCount() - 1).getBottom() <= list.getHeight()){
//Scrolled end
}
你的onScroll 中的