您的位置:首页 > 其它

SimpleCursorAdapter必须要一个_id字段

2012-05-30 00:06 375 查看
private void pudata() {
//cursor=sdb.query("books", new String[]{"id","bookname","price"}, null, null, null, null, null);
SQLiteQueryBuilder sqb=new SQLiteQueryBuilder();
sqb.setTables("books");
String returnColumn[]={"books.id as _id","books.bookname","books.price"};
cursor=sqb.query(sdb, returnColumn, null, null, null, null,null);
Log.e("", "rows:"+cursor.getCount());
startManagingCursor(cursor);

ListAdapter adapter=new SimpleCursorAdapter(this,R.layout.listview,cursor,
new String[]{"_id","bookname","price"},new int[]{R.id.listview_id,R.id.listview_name,R.id.listview_price});
lv.setAdapter(adapter);
}

使用SimpleCursorAdapter给ListView填充数据时,报异常:

05-29 16:03:17.707: E/AndroidRuntime(28723): Caused by: java.lang.IllegalArgumentException: column '_id' does not exist。

该数据表中并没有_id字段,所以感觉很奇怪。

修改的方式是:在确定查询字段时,可以将主键别名为_id,然后在创建SimpleCursorAdapter时指定该别名即可。

(不过仍然感觉很奇怪,为何非要_id呢?)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐