2

我是一个新的Android开发人员,似乎已经在我的脑海中变得有点儿了。当我向列表中添加更多内容时,我正在尝试进行listView更新。基于SQLite支持的ContentProvider更新ListView

ListView基于SQLite数据库。通过为SQLite数据库(建议here)制作ContentProvider,我能够使ListView基于SQLite数据库。现在我的问题是我想更新SQLite数据库,并将其反映在ListView上。我正在使用一个加载程序,并根据this如果我实现了加载程序的权利,它将监视数据。

我试图直接更新SQLite数据库,但是,这并没有导致ListView更新没有关闭和重新打开。我的直觉是我应该在我的contentProvider中实现插入方法。我做了一个非常简单的实现:

@Override 
    public Uri insert(Uri uri, ContentValues contentValues) { 
     return ContentUris.withAppendedId(uri, mCollectionDB.insertCollection(contentValues)); 
} 

不幸的是,这样做的结果是我的应用程序崩溃与“显示java.lang.NullPointerException”。这尤其令人困惑,因为使用完全相同的contentValue来使MainActivity中的.insertCollection调用没有问题。

我真正感兴趣的问题是如何让我的listView更新,当我插入数据到我的SQLite数据库。如果插入到ContentProvider中无关紧要,请忽略它。我并不确定我出错的地方,所以我不确定其他代码可能有用,但如果它有帮助,我很乐意在更多代码中进行编辑。

+0

您是否找到了解决方案? – Anderson

+0

我的问题是我宣布一个新的内容提供商,而不是使用getCntentResolver()。有关更多详细信息,请参阅我对接受答案的评论。 虽然,我真的只是需要阅读更多关于相关的Android工具。所以,通过链接教程帮助了很多。 –

回答

1
+0

从那些我发现我的问题。我正在使用: 'CollectionProvider collectionProvider = new CollectionProvider(); collectionProvider.insert(CollectionProvider.CONTENT_URI,valuesNewTable);' 代替 'getContentResolver()插入(CollectionProvider.CONTENT_URI,valuesNewTable);' –

1

here是一个例子,将数据插入SQLite数据库,并在列表视图中显示出来。 看看吧

这个想法很简单,插入数据到数据库和点击查看按钮初始化包含已插入数据的ArrayList列表视图。

您可以询问是否有任何疑问。