在修改了它的cursorLoader后,android ListView没有得到更新

时间:2014-12-01 01:40:04

标签: android-fragments

我是android和java的新手,并且开发了一个应用程序,其中还有一些我还没有解决的问题。 我有一个主要活动是viewPager,每个页面都是一个片段。如果4个片段3从ListFragments扩展而一个从PreferencesFragment扩展。 ListFragments具有CursorAdapter,用于通过提供程序从SQLite数据库获取数据。 我能够将数据导入数据库,正确插入,修改和查询数据并填写列表视图。 我的首选项设置是选择查看数据库中数据的不同方式。 我不知道如何做到这一点,我已经实现了一个过程,我将cursorLoader查询修改为提供者,并提供了许多不同的选择" WHERE"条款。我已经找到了偏好的逻辑,因为它们现在存在,实现了代码但是很难找到尝试触发ListView刷新的内容。 由于"数据集"没有真正改变,没有触发器可以来自那里,加上只使用当前存在的相同光标来再次运行查询并返回相同的结果(或者足够聪明,知道它没有'我需要运行)。 在Stack Overflow上我确实找到了一些类似实现的引用,这些实现建议重新启动游标加载器,然后在reStart上读取存储的Preferences文件中的当前值,创建一个现在修改的WHERE子句,它将显示子集在首选项设置中指定的数据。 现在测试应用程序,即使使用cursorLoader的reStart,ListView也不会刷新。 我唯一能让它正常工作的是重启应用程序。如果我停止应用程序并重新启动它,则使用新值,并按照首选项的要求显示ListView。

在浏览Stack Overflow和Android网站时,我确实找到了另一组API,这些API可能更适合我想要做的事情,即过滤器API。

那么第一个问题是,我是否在如何控制"过滤"数据库的视图。过滤更好的方法和推荐的方法 做我想做的事情? 第二个问题与我的ListFragments的片段生命周期有关,以实现这个CursorLoader更新。

感谢您对该主题的任何意见。 -Dan

1 个答案:

答案 0 :(得分:0)

在这里找到我的问题。 两件事,我尝试过滤的方式是工作,从我在中看到的 Android开发网站,有一个参考,表明过滤能力是 已在我正在使用的CursorAdapter,CursorLoader类中实现。

当我的首选项设置发生变化时,我对cursorLoader进行了重新启动,但重启错了。

问题解决了。任何输入是有一个更好的方式将不胜感激。 此致,Dan