【发布时间】:2013-11-25 05:20:26
【问题描述】:
我是一名新的 Android 开发人员,似乎有点不知所措。当我向列表中添加更多内容时,我正在尝试更新 listView。
ListView 基于 SQLite 数据库。通过为 SQLite 数据库创建一个 ContentProvider(建议 here),我能够使 ListView 基于 SQLite 数据库。现在我的问题是我想更新 SQLite 数据库并将其反映在 ListView 上。我正在使用加载器,根据this,如果我正确实施加载器,它将监控数据。
我尝试直接更新 SQLite 数据库,但这并没有导致 ListView 在不关闭和重新打开的情况下更新。我的直觉是我应该在我的 contentProvider 中实现 insert 方法。我做了一个非常简单的实现:
@Override
public Uri insert(Uri uri, ContentValues contentValues) {
return ContentUris.withAppendedId(uri, mCollectionDB.insertCollection(contentValues));
}
不幸的是,结果是我的应用程序因“java.lang.NullPointerException”而崩溃。这尤其令人困惑,因为使用完全相同的 contentValues 使 MainActivity 中的 .insertCollection 调用正常工作。
我真正感兴趣的问题是当我将数据插入我的 SQLite 数据库时如何让我的 listView 更新。如果插入 ContentProvider 无关紧要,请忽略它。我不太确定哪里出错了,所以我不确定还有哪些其他代码可能有用,但如果有帮助,我很乐意编辑更多代码。
【问题讨论】:
-
您找到解决方案了吗?
-
我的问题是我声明了一个新的内容提供者,而不是使用 getCntentResolver()。有关更多详细信息,请参阅我对已接受答案的评论。虽然,实际上我只是需要阅读更多有关相关 android 工具的信息。因此,阅读链接的教程很有帮助。
标签: android android-sqlite android-contentprovider android-loadermanager android-loader