2012-01-24 66 views
1

我见过一些使用OnScrollListener的ListView动态增长实现。在不使用OnScrollListener的情况下加载新的ListView项目

我想知道,有没有更优雅的解决方案?如果适配器说有更多可用项目,ListView本身不会向适配器请求更多数据?

毕竟,ListView在滚动时根据需求创建视图,所以为什么我应该创建自己的滚动监听器?理论上,我应该能够响应在滚动ListView时发给底层适配器的ListView请求。 当ListView告诉它的Adapter它需要更多的数据用于下一个视图,并且当加载完成时,我可以向服务器发出新的数据请求(批量),我可以通知ListView新数据可用。

有没有人试过这种方法?有没有可用的源代码?

我需要实现某种无尽的列表,但实际上它只有有限的JSON记录数(约500),并且每条记录都有一个唯一的Id,所以我可以将它们缓存在一个简单的Map中。我只是想用最优雅和直接的方法(最好与Android 1.6兼容)来实现它,以避免各种拙劣的解决方案。

回答

4

毕竟,ListView在滚动时根据需求创建其视图, 为什么我应该创建自己的滚动监听器?

没有listview不会创建视图。它是创建视图的适配器。

通过跟踪Listview请求哪个视图位置,您可以尝试在getview函数中请求更多数据。但优雅的解决方案将保持与onscrolllistener。

+1

谢谢你的提示,我发现了一个类似的实现在这里:http://codinglines.frankiv.me/post/14552677846/android实现动态加载适配器我试过了,它对我的​​需求很好。 – JustAMartin

1

正如manjusg说,你可以在你的getView方法用这一招:

... 
if (position > lastViewed && position == getCount()-1) { 
    lastViewed = position; 
    runYourTask(); 
} 
... 
相关问题