在使用ListViw的时候使用simpleCursorAdapter适配器显示sqlite数据,
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.persionitem, cursor, new String[{ "personid", "name", "age" }, new int[] {R.id.personid, R.id.name, R.id.age });
就出现 java.lang.IllegalArgumentException: column ‘_id’ does not exist 错误。
查询手册后,发现Cursor中未包含名为_id的列,SimpleCursorAdapter父类CursorAdapter的要求。
遇到这种情况,可以在查询语句中伪造一列名为_id的字段。
建议:sqlite的主键命名时,命名为_id,所以,当你用到sqlite的simpleCursorAdapter时,必须把数据表的主键命名为_id。
改动:1
String sql = "select personid as _id,name,age from person limit ?,?";
2 :SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.persionitem, cursor, new String[{ "_id", "name", "age" }, new int[] {R.id.personid, R.id.name, R.id.age });
分享到:
相关推荐
总结来说,SimpleCursorAdapter是Android中用于将SQLite数据库查询结果展示在ListView上的关键工具,通过它,开发者能够轻松地将数据与UI组件关联,提供用户友好的数据浏览体验。正确理解和使用SimpleCursorAdapter...
- 创建`ArrayAdapter`时需要指定数据源、布局资源ID以及数据项ID。 - 扩展`BaseAdapter`时,需要重写`getItem()`, `getItemId()`, `getCount()`, `getView()`四个方法。 **6. `Spinner` 和 `GridView`** - **`...
SimpleCursorAdapter是Android开发中一个重要的适配器类,它用于将SQLite数据库查询结果与ListView进行绑定,使得数据能够以列表形式展示给用户。在Android应用中,数据存储经常使用SQLite数据库,因为它轻量级、...
SimpleCursorAdapter 需要 Cursor 对象中包含一个名为 "_id" 的字段,如果表中没有这个字段,可以使用别名来解决问题。 例如: Cursor cursor = db.rawQuery("select personId as _id, name from person where ...
2. 创建SimpleCursorAdapter,传入上下文、布局ID、Cursor、列映射(定义数据与视图元素的对应关系)以及Flags。 3. 设置ListView的Adapter为SimpleCursorAdapter。 ```java Cursor cursor = getContentResolver()....
SimpleCursorAdapter是Android提供的一种便捷方式,用于将数据库查询结果(通常是Cursor对象)绑定到ListView等视图上。本篇文章将深入探讨如何简单地利用SimpleCursorAdapter获取并展示联系人信息。 首先,我们...
7. **数据映射**: 在创建`SimpleCursorAdapter`时,我们传递了字段映射,即`new String[] { Phones.NAME, Phones.NUMBER }`和视图映射`new int[] { android.R.id.text1, android.R.id.text2 }`,这样`Cursor`中的`...
`SimpleCursorAdapter`是Android提供的一种特殊类型的Adapter,主要用于将SQLite数据库中的数据绑定到ListView、GridView等视图组件上。本篇文章将深入探讨`SimpleCursorAdapter`的使用方法及其在实际开发中的应用。...
- **SQL语句**: 用于创建笔记表(例如:`CREATE TABLE notes (id INTEGER PRIMARY KEY, title TEXT, content TEXT)`),以及插入、查询和更新数据。 - **ContentProvider**: 虽然这里未明确提及,但...
Android提供了几种内置的适配器,如ArrayAdapter、SimpleAdapter和SimpleCursorAdapter。 - **ArrayAdapter**:是最简单的适配器,适用于显示单一类型的文本数据。在示例代码中,`new ArrayAdapter(this, android....
android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" /> ``` 使用`SimpleCursorAdapter`来填充数据: ```java // 假设cursor是查询得到的结果集 ...
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.list_item, cursor, new String[]{"column1", "column2"}, new int[]{R.id.text1, R.id.text2}); listView.setAdapter(adapter); ``` 在...
android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` ### 2. 创建适配器 ListView需要一个适配器(Adapter)来填充数据。适配器是连接数据源和...
- 在Android中,Adapter通常实现了一个或多个特定接口,例如BaseAdapter、SimpleAdapter、ArrayAdapter和SimpleCursorAdapter等。这些Adapter提供了不同的功能和灵活性,以适应不同场景的需求。 2. **Adapter的...
- Android提供了几种预定义的适配器,如ArrayAdapter、SimpleAdapter和SimpleCursorAdapter。 - ArrayAdapter是最基础的适配器,适用于展示单一类型的文本数据。 - SimpleAdapter具有更好的扩展性,允许自定义...
- **创建`SimpleCursorAdapter`实例**:指定数据源(`Cursor`)、视图布局(如`android.R.layout.simple_list_item_1`)以及要绑定的数据字段(例如`name`、`age`)。 - **设置适配器**:将创建好的`...
例如,在使用SimpleCursorAdapter时,可以通过指定列名和视图ID,将Cursor中的特定列映射到XML布局文件中定义的TextView或ImageView。这样,当Cursor遍历数据库记录时,对应的列值会被填充到ListView的相应视图中。 ...
布局资源ID定义了每个列表项的UI结构,如`android.R.layout.simple_list_item_1`,它是一个预定义的单行文本布局。在上述示例中,ArrayAdapter被用来将“测试数据1”至“测试数据4”显示在ListView中。 2. **...