这似乎是一个已经有很多答案的问题;但是,我找不到通用的方法。
当到达底部时,我正在尝试将数据添加到 ListView
;使用 AsyncTask
从 Internet 检索数据。 ListView
已经附加了一个适配器。
因此,在寻找实现这一目标的好方法时,我想到了两种不同的方法。
- 第一个,
onScrollStateChanged()
方法,基本上与this 相关。页。但是,它使用的参数在实际API中并没有对应关系。同时,this链接使用正确的 API,但我不知道是否以正确的方式。我尝试了两个链接中的第一个,但有点无聊。调试应用程序时,diff
值变化很大,我不知道如何正确插入表达式。另外,我不知道如何修复可以开始检索数据的偏移量;我的意思是,我不想在即将到达底部时执行代码,而是在到达底部之前执行代码。此外,有时即使我们滚动到顶部也会调用它。 - 第二个是
onScroll()
方法,用在this 中。回答或以不同的方式,在this代码。我尝试调整这两个代码中的最后一个,但这会导致很多问题,即使我们没有到达列表底部,数据也会加载。
那么,什么方法最好呢?什么时候以及为什么我应该更喜欢其中之一? 在我的情况下,我应该使用这两者中的哪一个?
最佳答案
这是我建议的第三种方法的一些代码,我在自己的项目中使用了这些方法。我使用适配器的 getView
方法来检测何时到达列表末尾。
public View getView(int position, View convertView, ViewGroup parent) {
// handle recycling/creating/initializing view
if(reachedEndOfList(position)) loadMoreData();
return convertView;
}
private boolean reachedEndOfList(int position) {
// can check if close or exactly at the end
return position == getSize() - 1;
}
private void loadMoreData() {
// Perhaps set flag to indicate you're loading and check flag before proceeding with AsyncTask or whatever
}
关于android - 检测 ListView 何时到达底部 - onScroll() 或 onScrollStateChanged()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28177387/