项目开发之需要, 做一个ListView分页显示, 动态加载数据到ListView. 需求是: 每一次ListView显示20条数据, 当滚动条滑动到最后一条的时候, ListView会自动到后台请求数据并加载到ListView. 一开始, 没有思路, 后来到网上搜了下:步骤是这样的. 1. 在ListView的 OnScrollListener 事件中:
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
//Log.i(TAG, "获取第一个可见位置:" + listPos);
listPos = mListView.getSelectedItemPosition(); // ListPos记录当前可见的List顶端的一行的位置
}
}
然后, 在数据设置到ListView的adapter后 , 设置ListView的setSelection(listPos)方法;
这种方式虽然能够实现以上功能 ,但:效果不明显, 定位不准确, 而且ListView会给人一种刷新的感觉, 而不是异步后台加载数据.
后来,通过网上不断的搜索 , 终于找到了另一种比较合理的方法
1. 实例化ListView
//1. 获取ListView
mListView = getListView();
setupListHeader(true);
mListAdapter = new NewsListViewAdapter(this,
((Foursquared) getApplication()).getRemoteResourceManager());
//2. 设置mListView的适配器: adapter
mListView.setAdapter(mListAdapter);
2. ListView添加滑动事件:
// 添加滚动条滑动事件
mListView.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
loadMoreGIF.setVisibility(View.VISIBLE);
if (mStateHolder.getIsRunningTask() == false) {
//mSearchTask 是一个继承了AysncTask的线程.向后台加载数据.
mSearchTask = new SearchTask(activity, query, sleepTimeInMs);
mSearchTask.execute();
}
}
}
});
3. 后台数据加载完之后, 将结果添加到Adapter. 然后调用: Adapter的notifyDataSetChanged()方法.
注意: 数据加载完, 并设置Adapter值后, 不不需要调用ListView.setAdapter(adapter).方法. 否则ListView会重新刷新一遍, 就不会有异步加载数据的效果. 只需修改adapter值之后, 调用notifyDataSetChanged()即可.
分享到:
相关推荐
Android开发笔记---ListView
Android高级应用源码-Listview分页加载数据.zip
安卓开发-Listview分页加载数据.zip
ListView动态加载数据分页,使用Handler+线程和AsyncTask两种方法
Android自学笔记-11-listview简单例子
Android项目实战-ListView异步图片加载及压缩缓存
安卓app开发项目-ListView上下翻页效果(源码).zip安卓app开发项目-ListView上下翻页效果(源码).zip安卓app开发项目-ListView上下翻页效果(源码).zip安卓app开发项目-ListView上下翻页效果(源码).zip安卓app开发项目-...
Android学习笔记-采用ListView实现数据列表显示-以及各种适配器使用-和如何写.pdf
Android--开发--ListView上下翻页效果
Android--开发-- ListView下拉刷新 Demo
Listview分页加载数据.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
Android--开发--ListView 中的item随意拖动
Android--开发--ListView 实现点击侧边A-Z快速查找
android 实现listview动态下拉刷新,动态加载数据 可以避免一次数据加载过多
android-world-of-listview-android
Android-ListView-Example
android-pulltorefresh-listview 下拉刷新ListView
Android--开发--ListView保持在列表的顶部固定View 案例分析 源码
2-android-pulltorefresh-listview 下拉刷新ListView.zip
listview实现动态加载数据,值得学习