Android ListView控件实战:SQLite数据库操作与增删改查
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上。通过创建、查询、更新和删除数据库记录,以及实现长按删除功能,开发者可以构建出强大的数据管理界面。
1340 浏览量
3164 浏览量
1655 浏览量
点击了解资源详情
2024-11-07 上传
2021-06-18 上传
3139 浏览量
141 浏览量