ListView动态加载数据

来源:未知 责任编辑:责任编辑 发表时间:2013-11-26 22:13 点击:

当listview需要加载的数据过多时,若一次性载入则速度会相当缓慢,影响用户体验,这时候就需要动态加载数据,即每次载入固定长度的数据,android market的listview就是采用这种方式,使得加载看起来很平滑,响应速度很快,有助于提高用户体验。
  首先,要实现动态加载首先需要在获取数据时每次在上次获取到的数据之后的位置开始取得固定长度的数据,可通过"select * from TableName LIMIT m OFFSET n"语句实现,其中m是要取得数据的长度,n是数据的偏移量。
  然后,在Activity中需要重写listview的onScroll方法,在onScroll中添加判断条件,当上一次加载的数据显示完并滑动到底部之后需要再次获取数据,可以在UI Thread中在开启一个线程去加载数据,加载数据时应弹出一个试图提示用户正在加载。
  最后,加载数据的线程处理完毕后,刷新ListView。
  以下是实现动态加载的主要步骤:
//加载数据的方法
 
private void fillAdapter(int count, int begin) {
        // TODO Auto-generated method stub
        SQLiteOpenHelper mSQLiteOpenHelper = new SQLiteOpenHelper (
                this);
        Cursor c= mSQLiteOpenHelper .getDynamicListViewData(count, offset);
 
}
 
//监听listview的onScroll方法
 
OnScrollListener listScroll = new OnScrollListener() {
 
        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {
            // TODO Auto-generated method stub
        }
 
        @Override
        public void onScroll(AbsListView view, int firstVisibleItem,
                int visibleItemCount, int totalItemCount) {
            if(isLoading) //正在加载时就不要让在执行活动触发事件
                return;
            if (firstVisibleItem + visibleItemCount == totalItemCount) {
                // 开线程去获取数据
                if (totalItemCount <= totalItemsCount) {
                    Integer[] params = new Integer[] { 25, currentItemCount };
 
                    mAsynchTask = new AsynchTask();

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Android 完全退出程序
  • 原创:Android应用开发-Andorid歌词秀,含源码
  • android 屏幕保护
  • Android手机软件汉化教程---第四课 dex文件汉化
  • 众多Android 开源项目推荐,给力工作给力学习
  • Android Audio代码分析4
  • Android得到已安装的应用程序信息!
  • Android开发者指南(29) —— USB Host and Accessory
  • Android成长的幕后推手:工程师鲁宾
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1