在Android Studio中,ListView无法显示从SQLite读取的数据

在Android Studio中,ListView无法显示从SQLite读取的数据

如题,用SQLite作为内容提供器,然后用另一个应用程序去读取并显示在ListView中,cursor可以读取到数据(打印出来了),适配器也没有问题(不读取内容提供器直接手动添加的话是可以显示的),但是ListView就是一片空白。有没有人能好心提点一下这可能是什么原因呢???(折腾三天了,各种尝试都没用,欲哭无泪)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
SQLite是一种轻型的数据库,适用于移动设备以及小型应用程序。在AndroidSQLite也是默认的数据库,可以通过Android提供的API来创建、读取和修改SQLite数据库。下面是使用Android Studio实现SQLite数据库的创建和功能实现的完整过程: 1. 创建数据库 在Android创建SQLite数据库需要继承SQLiteOpenHelper类,并实现onCreate()和onUpgrade()方法。在onCreate()方法,我们需要定义数据库的表结构。 ```java public class DBHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "dairy.db"; private static final int DATABASE_VERSION = 1; public DBHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { // 定义表结构 String sql = "CREATE TABLE dairy (id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, content TEXT, date TEXT)"; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // 升级数据库版本 db.execSQL("DROP TABLE IF EXISTS dairy"); onCreate(db); } } ``` 2. 插入数据 在插入数据之前,我们需要获取一个可写的数据库实例,并通过ContentValues对象来设置要插入的数据。 ```java DBHelper dbHelper = new DBHelper(this); SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("title", "今天的日记"); values.put("content", "今天天气很好"); values.put("date", "2021-01-01"); db.insert("dairy", null, values); db.close(); ``` 3. 查询数据 查询数据需要使用到Cursor对象,它可以通过执行SQL语句来获取数据。 ```java DBHelper dbHelper = new DBHelper(this); SQLiteDatabase db = dbHelper.getReadableDatabase(); Cursor cursor = db.query("dairy", null, null, null, null, null, null); if (cursor.moveToFirst()) { do { String title = cursor.getString(cursor.getColumnIndex("title")); String content = cursor.getString(cursor.getColumnIndex("content")); String date = cursor.getString(cursor.getColumnIndex("date")); // 将数据添加到ListView } while (cursor.moveToNext()); } cursor.close(); db.close(); ``` 4. 更新数据 更新数据需要使用到ContentValues对象,我们可以先查询要更新的数据,然后将更新后的数据保存到ContentValues,再执行update()方法。 ```java DBHelper dbHelper = new DBHelper(this); SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("title", "更新后的日记"); values.put("content", "今天天气依然很好"); values.put("date", "2021-01-02"); db.update("dairy", values, "id=?", new String[]{"1"}); db.close(); ``` 5. 删除数据 删除数据同样需要使用到SQLiteDatabase对象,我们可以通过执行delete()方法来删除指定的数据。 ```java DBHelper dbHelper = new DBHelper(this); SQLiteDatabase db = dbHelper.getWritableDatabase(); db.delete("dairy", "id=?", new String[]{"1"}); db.close(); ``` 6. 显示数据Android,我们可以使用ListView控件来显示数据,需要定义一个Adapter来将数据显示ListView。 ```java DBHelper dbHelper = new DBHelper(this); SQLiteDatabase db = dbHelper.getReadableDatabase(); Cursor cursor = db.query("dairy", null, null, null, null, null, null); ArrayList<Map<String, String>> list = new ArrayList<>(); if (cursor.moveToFirst()) { do { Map<String, String> map = new HashMap<>(); String title = cursor.getString(cursor.getColumnIndex("title")); String content = cursor.getString(cursor.getColumnIndex("content")); String date = cursor.getString(cursor.getColumnIndex("date")); map.put("title", title); map.put("content", content); map.put("date", date); list.add(map); } while (cursor.moveToNext()); } SimpleAdapter adapter = new SimpleAdapter(this, list, android.R.layout.simple_list_item_2, new String[]{"title", "content", "date"}, new int[]{android.R.id.text1, android.R.id.text2}); ListView listView = findViewById(R.id.list_view); listView.setAdapter(adapter); cursor.close(); db.close(); ``` 以上就是使用Android Studio实现SQLite数据库的创建和功能实现的完整过程。实际应用,我们还需要对数据进行合理的管理和处理,以保证数据的安全性和可靠性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值