我正在从Http服务器加载一个listview,一次20个,在Listview的末尾我想从服务器加载下一个20个数据,这个过程将继续,直到数据在服务器结束,我使用扩展BaseAdapter的类填充前20个数据.我该怎么办?
小智 42
这看起来也是一个优雅的解决方案:http://benjii.me/2010/08/endless-scrolling-listview-in-android/
它还实现了一个AbsListView.OnScrollListener,并在达到当前滚动视图中的剩余项目的特定阈值时使用AsyncTask加载更多内容.
Hei*_*upp 10
您可以实现一个AbsListView.OnScrollListener获取信息并允许您加载更多数据的信息.
见例如
....
ListView.setOnScrollListener(this);
....
Run Code Online (Sandbox Code Playgroud)
然后看看https://github.com/pilhuhn/ZwitscherA/blob/master/src/de/bsd/zwitscher/TweetListActivity.java#L287
或者看一下sdk示例中的List9示例.
Heiko Rupp的代码是解决这个问题的最佳选择.你应该做的唯一事情是实现, onScrollListener并onScroll()
通过使用代码检查是否有一个列表的结尾
boolean loadMore = firstVisibleItem + visibleItemCount >= totalItemCount-1;
Run Code Online (Sandbox Code Playgroud)
if true使用常规方式加载数据..
感谢Heiko Rupp为这个片段:)
这就是我用来在listview末尾加载更多数据的方法
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
}
});
Run Code Online (Sandbox Code Playgroud)