查询数据库时使用CursorAdapter更新ListView

时间:2015-03-07 20:19:52

标签: android listview android-cursoradapter

我有一个ListView和一个扩展CursorAdapter的CustomListAdapter。当我第一次加载包含ListView的片段时,我正在使用LoaderManager将数据加载到我的CustomListAdapter中。一切正常。我正在使用ContentProviders,因此对数据库中基础数据的任何更新或更改都会反映在Listview中。

现在我想允许用户搜索列表中的特定项目。所以换句话说,我想根据从SearchDialog获得的搜索查询来更新列表视图。我已经使用了SearchDialog,并且我已经达到了使用搜索查询在ListViewFragment的ParentActivity中获得意图的程度。但是我现在不确定我应该做什么。

我正在考虑分离然后将Fragment重新附加到ParentActivity,将搜索查询字符串传递给ListViewFragment,以便片段的onCreateLoader()方法可以使用该查询进行另一次搜索。这似乎是实现我想要做的事情的简单方法。

这是基于搜索更新ListView的正确方法吗?或者这对我正在尝试做的事情有点过分了吗?有没有人有任何其他建议?

亲切的问候

1 个答案:

答案 0 :(得分:0)

对于任何想要了解的人,我的需求已更改,而不是使用相同的Activity来查看结果,我将结果发送到重新使用ListViewFragment的新SearchResultActivity。

我在ListViewFragement上创建了一个存储查询字符串的实例变量。在创建Fragment的新实例时,它需要此查询字符串的值。当我从第一个Activity加载Fragment时,字符串为null,onCreateLoader()默认加载所有结果。当我从SearchResultActivity加载Fragment时,我从SearchDialog传递查询结果,而onCreateLoader()将使用查询根据特定选择返回Cursor。

无论如何我都不需要附加和重新附加片段。但是,如果我使用相同的Activity和ListViewFragment来显示搜索结果,而不是将片段分离并重新附加到活动,我可能会使用LoaderManager的restartLoader方法:

LoaderManager Doc