Android在滚动结束时dynamic加载列表视图?
我一次从Http服务器加载一个列表视图20, 在Listview结束时,我想从服务器加载下20个数据 ,这个过程将继续,直到数据在服务器结束,我使用扩展BaseAdapter的类填充前20数据,我该怎么办?
这看起来也是一个优雅的解决scheme: http : //benjii.me/2010/08/endless-scrolling-listview-in-android/
它还实现了AbsListView.OnScrollListener
,并在达到当前滚动视图中剩余项目的某个阈值时立即使用AsyncTask加载更多内容。
好吧,我已经看到,这是一个常见的问题,所以我已经做了一个小型库 ,自定义加载更多,并拉动刷新ListView在github ,请检查在这里 ,所有非常详细的解释在库中。
您可以实现一个AbsListView.OnScrollListener
,获取通知,并允许您加载更多的数据。
见例如
.... ListView.setOnScrollListener(this); ....
然后看看https://github.com/pilhuhn/ZwitscherA/blob/master/src/de/bsd/zwitscher/TweetListActivity.java#L287
或者看看sdk例子中的List9例子。
Heiko Rupp的代码是这个问题的最佳select。 你应该做的唯一的事情是实现onScrollListener
和onScroll()
只是通过使用代码检查是否有一个列表的末尾
boolean loadMore = firstVisibleItem + visibleItemCount >= totalItemCount-1;
如果真的加载您的数据以正常的方式..
thaks Heiko Rupp这个片段:)
这是我用来加载更多的数据在列表视图的末尾
listview.setOnScrollListener(new OnScrollListener(){ @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { //Algorithm to check if the last item is visible or not final int lastItem = firstVisibleItem + visibleItemCount; if(lastItem == totalItemCount){ // you have reached end of list, load more data } } @Override public void onScrollStateChanged(AbsListView view,int scrollState) { //blank, not using this } });