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
    评论
抱歉,我可以回答您的问题。以下是一个示例代码,帮助在 Android Studio 使用 SQLite 数据库将数据显示在 ListView 上: 1. 定义 SQLiteOpenHelper 类 public class SqliteHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "my_db"; private static final int DATABASE_VERSION = 1; public SqliteHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { String CREATE_TABLE = "CREATE TABLE my_table ( " + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name TEXT, " + "age INTEGER )"; db.execSQL(CREATE_TABLE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { String DROP_TABLE = "DROP TABLE IF EXISTS my_table"; db.execSQL(DROP_TABLE); this.onCreate(db); } } 2. 在 Activity 使用 SQLiteOpenHelper public class MainActivity extends AppCompatActivity { private SqliteHelper dbHelper; private ListView listView; private ArrayAdapter<String> adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); dbHelper = new SqliteHelper(this); listView = (ListView)findViewById(R.id.listView); adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1); listView.setAdapter(adapter); SQLiteDatabase db = dbHelper.getWritableDatabase(); Cursor cursor = db.rawQuery("SELECT * from my_table", null); if (cursor.moveToFirst()) { do { String name = cursor.getString(cursor.getColumnIndex("name")); int age = cursor.getInt(cursor.getColumnIndex("age")); adapter.add("Name: " + name + ", Age: " + age); } while (cursor.moveToNext()); } cursor.close(); db.close(); } } 在这个示例代码,我们首先定义了 SqliteHelper 类,这是一个 SQLiteOpenHelper 的子类。我们在 onCreate() 创建了一个名为 my_table 的表格,并在 onUpgrade() 定义了如何升级我们的数据库。 然后,在 MainActivity ,我们使用 SqliteHelper 类创建了一个 SQLiteDatabase 对象,并使用 Cursor 对象从 my_table 表格获取数据。最后,我们使用 ArrayAdapter数据添加到 ListView 。 希望这个示例代码可以帮助您实现在 Android Studio 使用 SQLite 数据库将数据显示在 ListView 上。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值