Android ListView 实现分批加载

本文详细介绍了如何在Android中实现ListView的分批加载数据。通过监听ListView的滑动,当滑动到底部时,从数据库加载下一批数据并追加到适配器,然后刷新界面显示新数据。示例代码包括SQLite数据库操作、数据加载任务以及ListView滑动监听的设置。
摘要由CSDN通过智能技术生成

转载请注明出处: http://blog.csdn.net/like_program/article/details/52901492

ListView 想必大家都很熟悉了,当有大量数据需要显示时,通常不会一次性把数据全部加载显示出来,而是会先加载一部分,当用户滑动屏幕滑到最后一条数据时,再加载下一部分数据。也就是分批加载。

这篇博客将讲解如何实现 ListView 的分批加载数据。

首先来说下它的原理,其实原理很简单:

在 ListView 下滑的过程中,不停检查 ListView 有没有滑到底(数据源的最后一个数据是否可见),如果滑到底了,就加载下一批数据,并把加载的数据追加到 ListView 适配器的数据源中,然后调用 adapter.notifyDataSetChanged() ,就可以刷新界面,将新增的数据显示出来,从而达到分批加载数据的效果。

好了,原理我们已经知道了,那就来写个 Demo 体验一下。

打开 Android Studio,新建 ListViewLoadTest 项目。

新建 MySQLiteOpenHelper.java,继承自 SQLiteOpenHelper,在这个类中,我们将实现创建数据库和表的逻辑。

MySQLiteOpenHelper.java 代码如下所示:

package com.example.listviewloadtest;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class MySQLiteOpenHelper extends SQLiteOpenHelper {
   

    /**
     * 数据库名字
     */
    private static final String DB_NAME = "database.db";

    /**
     * 数据库版本
     */
    private static final int DB_VERSION = 1;

    /**
     * 建表语句
     */
    private static final String CREATE_TABLE =
            "create table dataList (" +
                    "_id integer primary key autoincrement, " +
                    "number varchar(20))";

    public MySQLiteOpenHelper(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_TABLE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

代码很简单,就是创建了一个名字叫 database.db 的数据库,和名字叫 dataList 的表,_id 是表的主键,自增。number 就是我们等会要加载的数据。

我们再新建 Dao.java ,在这个类中,实现对数据库的操作。

Dao.java 代码如下所示:

package com.example.listviewloadtest;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import java.util.ArrayList;
import java.util.List;

public class Dao {
   

    private static final String KEY_NUMBER = "number";

    private static final String TABLE_NAME = "dataList";

    public MySQLiteOpenHelper helper;

    public Dao(Context context) {
        helper = new MySQLiteOpenHelper(context);
    }

    /**
     * 插入数据
     *
     *
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值