SimpleCursorAdapter必须要一个_id字段

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呢?)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值