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

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;// 返回游标
    }
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值