我想问一下,是否有可能将某些监听器绑定到ListView滚动事件上。
我的目标是,一旦ListView滚动到底部,如果还有数据,我想向服务器请求更多的数据。
我知道有一个类似的函数:getLastVisiblePosition(),但我认为必须在某种监听器中使用它,以便与当前最后可见位置进行比较,我是对的吗?
谢谢, /Marcin
仅仅是对TomTo的答案进行推广,以下是我对你如何实现这个功能的一些想法(仅限理论层面,我并没有在实践中尝试过):
ListView lv = (ListView)findViewById(R.id.list_view);
lv.setOnScrollListener(new OnScrollListener() {
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
//Check if the last view is visible
if (++firstVisibleItem + visibleItemCount > totalItemCount) {
//load more content
}
}
});
由于firstVisibleItem
返回的是一个索引(从0开始),我加1来获取实际项号。然后,如果该项号加上可见项数大于总项数,则理论上最后一个视图应该可见。这不应该是问题,但请记住,直到滚动结束才会调用此函数。
使用:
if (++visibleItemCount > totalItemCount)
替换为:
if (++firstVisibleItem + visibleItemCount > totalItemCount)