我见过一些使用OnScrollListener的ListView动态增长实现。
我想知道,还有更优雅的解决方案吗?如果适配器说有更多可用项目,ListView本身是否会从适配器请求更多数据?
毕竟,ListView在滚动时按需创建其视图,那么我为什么要创建自己的滚动侦听器呢?从理论上讲,我应该能够在滚动ListView时响应发布到底层适配器的ListView请求。 当ListView告诉其适配器它需要更多数据用于下一个视图时,我可以向服务器发出新的数据请求(批量),当加载完成时,我可以通知ListView新数据可用。
有没有人尝试过这样的方法?有没有可用的源代码?
我需要实现某种无穷无尽的列表,但它实际上只有有限数量的JSON记录(大约500个),并且每条记录都有一个唯一的Id,所以我可以将它们缓存在一个简单的Map中。我只是想用最优雅,最直接的方法(最好与Android 1.6兼容)来实现它,避免使用各种hacky解决方案。
答案 0 :(得分:4)
毕竟,ListView在滚动时按需创建其视图, 那我为什么要创建自己的滚动监听器?
没有列表视图不会创建视图。它是创建视图的适配器。
您可以通过跟踪Listview请求的位置来尝试在getview函数中请求更多数据。但优雅的解决方案将保留在onscrolllistener上。
答案 1 :(得分:1)
正如manjusg所说,你可以在你的getView方法中使用这个技巧:
...
if (position > lastViewed && position == getCount()-1) {
lastViewed = position;
runYourTask();
}
...