SQLite数据查询结果显示在ListView(SimpleAdapter与SimpleCursorAdapter)
2015-09-15 15:37
615 查看
SimpleAdapter与SimpleCursorAdapter不同在于数据源,SimpleAdapter数据源为List,SimpleCursorAdapter数据源为数据库查询结果游标Cursor。SimpleAdapter能定义各种各样的布局出来,可以放上ImageView(图片),还可以放上Button(按钮),CheckBox(复选框)
SimpleAdapter
在oncreate中调用
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时指定该别名即可。如:
主要代码
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;// 返回游标 }
相关文章推荐
- mysql语句与sql语句的部分对比
- SQLite数据库框架ORMLite与GreenDao的简单比较
- oracle v$database 视图
- PL/SQL 中文乱码
- MySQL中Left Join用法
- Oracle数据库日常维护命令
- mongodb java driver3.0初探
- 开启MySQL数据库远程连接
- mysql二进制日志详解及备份恢复、基于mysqldump及lvmsnapshot做备份恢复详解
- mysql存储过程详解
- [转载] 基于Redis实现分布式消息队列
- Code First Migrations更新数据库结构的具体步骤
- SQLserver平面数据导入异常
- unbuntu15.04安装oracle jdk8
- sql 循环处理查询到的结果集
- Mysql一些变态的sql写法
- mysql主从配置常用命令
- Oracle Goldengate 安装配置
- 在ORACLE中删除表中的重复数据
- windows 64位系统配置安装Memcache缓存