您的位置:首页 > 数据库

SQLite数据查询结果显示在ListView(SimpleAdapter与SimpleCursorAdapter)

2015-09-15 15:37 615 查看
SimpleAdapter与SimpleCursorAdapter不同在于数据源,SimpleAdapter数据源为List,SimpleCursorAdapter数据源为数据库查询结果游标Cursor。SimpleAdapter能定义各种各样的布局出来,可以放上ImageView(图片),还可以放上Button(按钮),CheckBox(复选框)

SimpleAdapter

private List<Map<String, Object>> getListAdapter(){
List<Map<String, Object>> list=new ArrayList<Map<String,Object>>();
Map<String, Object> map=new HashMap<String, Object>();
Cursor cursor = queryData("select sort from CYFeliao_bili where type=3");       while(cursor.moveToNext()){
String sort=cursor.getString(0);
map.put("sort", sort);
list.add(map);

}
return list;
}
/*
* 数据库查询
*/
public Cursor queryData(String queryString) {
database = SQLiteDatabase.openOrCreateDatabase(query_path, null);
Cursor cursor = database.rawQuery(queryString, null);
return cursor;// 返回游标
}


在oncreate中调用

list=getListAdapter();
SimpleAdapter adapter=new SimpleAdapter(MainActivity.this, list, R.layout.listview_item,
new String[]{"sort"}, new int[]{R.id.itemText});
query_listView.setAdapter(adapter);


SimpleCursorAdapter

注意:SimpleCursorAdapter是和数据库有关的东西,而sqlite数据库所要求的 自动增长的 id 必须是 _id这中形式 。

使用SimpleCursorAdapter给ListView填充数据时,如果数据库表中没有_id,会报异常:

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

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

Cursor cursor=queryData("select number as _id,name from city where _id<15");


主要代码

Cursor cursor = queryData("select number as _id,name from city where _id<15");
SimpleCursorAdapter adapter = new SimpleCursorAdapter(MainActivity.this, R.layout.listview_item, cursor,
new String[] { "name" }, new int[] { R.id.itemText }, 0);
query_listView.setAdapter(adapter);

/*
* 数据库查询
*/
public Cursor queryData(String queryString) {
database = SQLiteDatabase.openOrCreateDatabase(query_path, null);
Cursor cursor = database.rawQuery(queryString, null);
return cursor;// 返回游标
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: