Android搜索功能+SQLite存储示例:ListView+EditText操作详解

2 下载量 24 浏览量 更新于2024-08-30 收藏 162KB PDF 举报
在Android开发中,实现搜索功能并将其结果保存到SQLite数据库是一项常见的需求。本实例将展示如何通过整合ListView、EditText、ScrollView以及TextWatcher,结合SQLite技术来完成这一功能。以下是关键步骤和部分代码片段: 1. **界面布局**: - 主Activity布局文件(activity_main.xml)中,会包含一个EditText(et_search)用于用户输入搜索关键字,一个TextView(tv_clear)用于清空搜索历史,一个MyListView(listView)用来显示搜索结果,可能还有一个ScrollView用于容纳整个搜索界面,以及一个TextView(tv_tip)用于显示提示信息。 2. **数据模型**: - 创建一个`RecordSQLiteOpenHelper`类,继承自SQLiteOpenHelper,负责管理SQLite数据库的创建、升级和关闭操作。这个类通常会包含一个SQLiteDatabase实例(db)和一个适配器(adapter),用于与数据库交互。 3. **关键方法**: - `onCreate(Bundle savedInstanceState)`方法中,初始化控件并设置事件监听。当用户点击tv_clear时,调用`deleteData()`方法清除搜索历史,并调用`queryData("")`重新查询数据,以清空后的搜索关键词作为条件。 4. **输入监听**: - `et_search.setOnKeyListener`被用来监听键盘的回车键。当用户输入完成后按下Enter键,`onKey()`方法会被触发,检查keyCode是否为 KeyEvent.KEYCODE_ENTER,如果满足条件且动作是ACTION_DOWN,就执行搜索操作。 5. **搜索逻辑**: - 在`onKey()`方法中,执行搜索操作。这可能包括从EditText获取用户输入,使用TextWatcher实时筛选数据,然后通过SQLiteDatabase查询符合条件的结果,更新MyListView显示。 6. **焦点处理**: - 当EditText获得焦点时,软键盘会自动弹出,此时可能显示搜索历史。失去焦点时,隐藏软键盘并调整ListView的可见性。 7. **数据存储与检索**: - 使用SQLiteOpenHelper,创建一个`insertData()`方法,用于将用户的搜索内容插入到SQLite表中。同时,`deleteData()`方法则可以删除所有历史记录。 8. **适配器与列表显示**: - 定义一个BaseAdapter子类,用于适配数据库查询结果,并在ListView上显示。当数据发生变化时,适配器会更新视图。 这个实例代码提供了一个基础框架,实际开发中可能需要根据项目需求进行适当的修改和扩展,比如添加更复杂的筛选逻辑、分页加载、错误处理等。整体来说,这个实现展示了如何将用户输入与SQLite数据库相结合,提供搜索功能和搜索历史管理。