Android ListView控件实战:SQLite数据库操作与增删改查

1 下载量 53 浏览量 更新于2024-09-01 收藏 98KB PDF 举报
在Android开发中,ListView控件常常与SQLite数据库配合使用,以实现数据的动态展示和管理。本实例着重讲解如何利用SQLiteOpenHelper类创建和操作数据库,以及如何通过SimpleCursorAdapter将数据库中的数据同步到ListView上,实现增删查的功能。 SQLiteOpenHelper是Android内置的一个辅助类,它简化了对SQLite数据库的操作。该类主要提供了两个关键方法: 1. `onCreate(SQLiteDatabase db)`:当应用首次安装或数据库不存在时被调用。在这个方法中,开发者可以创建数据库表结构,初始化所需的表和字段。这个方法仅在数据库第一次创建时执行,之后除非调用`onUpgrade()`,否则不会再次调用。 2. `onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)`:当应用升级且旧版本的数据库结构不能满足新版本需求时,会调用这个方法。这里用于更新数据库表结构,例如添加新的字段或者修改已有的表结构。开发者需要根据新版本号传入`oldVersion`和`newVersion`参数,以决定如何处理数据库的升级过程。 为了实现与ListView的交互,我们需要做以下步骤: 1. 创建SQLiteOpenHelper子类,继承自SQLiteOpenHelper。在子类中,重写`onCreate()`和`onUpgrade()`方法,定义数据库表结构。 ```java public class SQLiteHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "example.db"; private static final int DATABASE_VERSION = 1; public SQLiteHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { // 创建表的SQL语句 String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS items (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, description TEXT)"; db.execSQL(CREATE_TABLE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // 数据库升级逻辑,如添加新表或字段 } } ``` 2. 在Activity或Fragment中,获取SQLiteHelper的实例,创建并打开数据库: ```java SQLiteHelper dbHelper = new SQLiteHelper(this); SQLiteDatabase db = dbHelper.getWritableDatabase(); ``` 3. 插入、查询和删除数据,可以使用SQLiteDatabase提供的方法,如`insert()`, `query()`, `delete()`等。 4. 使用SimpleCursorAdapter将查询结果绑定到ListView。首先,执行查询并获取Cursor对象: ```java String[] from = new String[] { "name", "description" }; int[] to = new int[] { R.id.item_name, R.id.item_description }; Cursor cursor = db.rawQuery("SELECT * FROM items", null); ``` 5. 创建SimpleCursorAdapter并将Cursor设置到ListView: ```java SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.list_item, cursor, from, to); listView.setAdapter(adapter); ``` 6. 实现长按删除功能,需要监听ListView的long click事件,通过Cursor的位置删除相应的数据库记录: ```java listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { // 根据position删除数据库记录 db.delete("items", "_id=?", new String[]{String.valueOf(position)}); cursor.moveToPosition(position); return true; } }); ``` 总结来说,本实例展示了如何通过SQLiteOpenHelper在Android应用中操作SQLite数据库,并将其数据动态展示在ListView上。通过创建、查询、更新和删除数据库记录,以及实现长按删除功能,开发者可以构建出强大的数据管理界面。