我的目标: 在应用程序中实现搜索。
如何运作 我有多个活动,在他们的Action Bar(或他们现在称之为工具栏)中有一个SearchView,以及一个专门的Search活动。我希望能够在SearchView中输入文本,在输入文本时接收建议,当我发送搜索以启动专用活动并正确列出结果时。
到目前为止我做了什么: 我按照建议here使用了SearchView和ContentAdapter方法。我已经设法在每个活动中都有SearchView,当我按下键盘上的键时,我将进入专用的搜索活动并显示查询(稍后将实施有效搜索)。到目前为止一切都很好。
问题: 我试图创建一个自定义ContentProvider来提供一些模拟建议,但我无法使其工作。我在其中定义了一个自定义String [],然后在查询方法中将我的搜索与所述字符串中的元素匹配。光标已注册,查询方法在我写文本时触发,但在非专用活动中没有显示结果。在专用的搜索活动中,我显示一个空的列表视图,并接收一个"错误更改游标和缓存列" IllegalStateException异常
我无法找到任何信息,因为每个人似乎都将ContentProvider与本地数据库一起使用。但是我打算将来在查询方法中从REST API接收我的信息,并使用收到的值返回光标(如this示例中所示)
我非常感谢这方面的任何建议。由于我不确定要提供什么代码,我会根据要求提供。
答案 0 :(得分:2)
修正了......
问题是我在onCreate中创建我的MatrixCursor。
解决方案是在查询方法中声明和实例化游标。
旁注: 事实证明,在传递给MatrixCursor构造函数的String []列中,您需要使用SearchManager常量(即SearchManager.SUGGEST_COLUMN_TEXT_1)指定值,否则文本将不会显示在建议视图中如果您使用默认视图和适配器。
我希望这有助于某人。