2

我是一名新的 Android 开发人员,似乎有点过头了。当我向列表中添加更多内容时,我正在尝试更新 listView。

ListView 基于 SQLite 数据库。我能够通过为 SQLite 数据库创建一个 ContentProvider 来使 ListView 基于 SQLite 数据库(这里建议)。现在我的问题是我想更新 SQLite 数据库并将其反映在 ListView 上。我正在使用加载器,根据这一点,如果我正确实施了加载器,它将监控数据。

我尝试直接更新 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 无关紧要,请忽略它。我不确定我哪里出错了,所以我不确定其他代码可能有用,但如果有帮助,我很乐意编辑更多代码。

4

2 回答 2

1

You can check loader concept. You can start with http://www.vogella.com/articles/AndroidSQLite/article.html#todo

Following are other 2 good tutorials http://mobile.tutsplus.com/tutorials/android/android-sdk_content-providers/

http://mobile.tutsplus.com/tutorials/android/android-sdk_loading-data_cursorloader/

于 2013-11-25T05:30:57.943 回答
1

,这是一个将数据插入 sqlite 数据库并在列表视图中显示的示例。看看它

这个想法很简单,将数据插入数据库,然后单击视图按钮,使用包含已插入数据的 arraylist 初始化列表视图。

您可以询问是否有任何进一步的疑问。

于 2013-11-25T05:39:54.443 回答