我试图知道用户何时滚动到列表视图的顶部或底部,他不能再滚动.
现在我正在使用OnScrollListener来了解哪些listview项可见.
listview.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if (totalItemCount - visibleItemCount == firstVisibleItem) {
//last item visible
}
if (firstVisibleItem == 0) {
//first item visible
}
}
});
Run Code Online (Sandbox Code Playgroud)
use*_*676 13
我已经通过了第一或最后一个项目的检查偏移找到了解决办法,这些项目的当偏移为0,那么我们已经达到了底部/顶listview.
listview.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if (firstVisibleItem == 0) {
// check if we reached the top or bottom of the list
View v = listview.getChildAt(0);
int offset = (v == null) ? 0 : v.getTop();
if (offset == 0) {
// reached the top:
return;
}
} else if (totalItemCount - visibleItemCount == firstVisibleItem){
View v = listview.getChildAt(totalItemCount-1);
int offset = (v == null) ? 0 : v.getTop();
if (offset == 0) {
// reached the bottom:
return;
}
}
}
});
Run Code Online (Sandbox Code Playgroud)