Android图书表增删查改与ListView实现
本文将介绍如何在Android应用程序中实现一个简单的图书管理系统,包括图书的增、删、查、改功能,并使用ListView展示图书信息。整个过程将覆盖布局设计、数据操作以及如何使用ListView进行数据展示。让我们开始吧!
1. 项目准备
在开始之前,请确保您已经在您的电脑上安装了Android Studio。接下来,创建一个新的Android项目,选择Empty Activity模版。
1.1 添加依赖库
在build.gradle文件中,添加需要的依赖库。例如,如果您使用SQLite进行数据存储,需要添加SQLite的支持库。
dependencies {
implementation 'androidx.appcompat:appcompat:1.3.0'
implementation 'androidx.recyclerview:recyclerview:1.2.1'
}
然后点击“Sync Now”来同步Gradle文件。
2. 数据库操作
我们将使用SQLite数据库来存储图书信息。首先,创建一个名为BookDatabaseHelper的类,负责数据库的创建和管理。
2.1 创建数据库助手类
public class BookDatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "books.db";
private static final int DATABASE_VERSION = 1;
public BookDatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "CREATE TABLE books (id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, author TEXT)";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS books");
onCreate(db);
}
// 添加图书
public void addBook(String title, String author) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("title", title);
values.put("author", author);
db.insert("books", null, values);
db.close();
}
// 查询所有图书
public Cursor getAllBooks() {
SQLiteDatabase db = this.getReadableDatabase();
return db.rawQuery("SELECT * FROM books", null);
}
// 更新图书
public void updateBook(int id, String title, String author) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("title", title);
values.put("author", author);
db.update("books", values, "id = ?", new String[]{String.valueOf(id)});
db.close();
}
// 删除图书
public void deleteBook(int id) {
SQLiteDatabase db = this.getWritableDatabase();
db.delete("books", "id = ?", new String[]{String.valueOf(id)});
db.close();
}
}
3. 布局设计
接下来,设计我们的布局文件activity_main.xml,这将包括一个ListView来展示图书信息和几个按钮来实现增、删、改功能。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/bookListView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
<Button
android:id="@+id/addButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="添加书籍"
android:layout_alignParentBottom="true"/>
<!-- 其他操作按钮 -->
</RelativeLayout>
4. 数据展示
在MainActivity中,使用ArrayAdapter和ListView来展示书籍信息。
4.1 主活动代码
public class MainActivity extends AppCompatActivity {
private BookDatabaseHelper dbHelper;
private ListView bookListView;
private ArrayAdapter<String> adapter;
private List<String> bookList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbHelper = new BookDatabaseHelper(this);
bookListView = findViewById(R.id.bookListView);
bookList = new ArrayList<>();
loadBooks(); // 加载书籍到列表
adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, bookList);
bookListView.setAdapter(adapter);
Button addButton = findViewById(R.id.addButton);
addButton.setOnClickListener(v -> {
// 添加图书的逻辑
});
}
private void loadBooks() {
Cursor cursor = dbHelper.getAllBooks();
bookList.clear();
while (cursor.moveToNext()) {
String title = cursor.getString(cursor.getColumnIndex("title"));
String author = cursor.getString(cursor.getColumnIndex("author"));
bookList.add(title + " by " + author);
}
cursor.close();
}
// 其他增删改的逻辑
}
5. 旅行图与甘特图展示
在构建图书管理系统的过程中,我们可以借助mermaid语法工具展示项目进度与计划。下面是一个简易的旅行图与甘特图示例。
5.1 旅行图示例
journey
title 旅行到图书馆
section 准备阶段
查找图书: 5: 先
准备交通: 3: 先
section 旅行阶段
到达图书馆: 4: 现在
查阅图书: 4: 现在
5.2 甘特图示例
gantt
title 图书管理系统项目进度
dateFormat YYYY-MM-DD
section 需求分析
需求收集 :a1, 2023-10-01, 30d
section 数据库设计
设计数据库 :after a1 , 15d
section 开发阶段
编码实现 :2023-10-20 , 30d
section 测试阶段
编写测试用例 :2023-11-19 , 15d
6. 结论
在本篇文章中,我们详细讲解了如何在Android应用中实现一个简单的图书管理系统,包括SQLite数据库的创建与操作,以及如何使用ListView展示图书数据。通过这个项目,您应该能够掌握Android基本的数据存储与展示技巧。希望未来的开发中能进一步深入这些功能,使应用更加完善和易用!
















