1

我希望我最近的搜索建议 [使用操作栏 Sherlock SearchView] 显示在自定义列表视图中。默认的左侧有一个计时器/时钟图标,右侧有最近的查询(文本)。

我想做一些类似谷歌搜索应用的事情,这里有一个截图

单击右侧的箭头时,仅搜索字段填充查询并且不执行搜索操作。单击列表视图中的项目(文本)时,将调用搜索意图。

我已经实现了搜索和建议,只想为建议创建一个自定义列表视图。

有人能帮我一下吗?

谢谢!

4

3 回答 3

1

您将不得不制作一个自定义列表适配器。

看这里如何做到这一点。 https://stackoverflow.com/a/8166802/661074

然后,在您的适配器中,您将拥有一个 onClick() 侦听器,用于“右箭头”。在监听器中,我会触发一个通知活动的事件。

这是一个非常好的事件消息库。 https://github.com/greenrobot/EventBus

然后,您的活动将收到包含有关单击项目的数据的消息。使用该数据填充您的搜索字段。

于 2013-07-30T20:40:58.007 回答
0

我知道这已经很晚了,但我发布了这个,所以这可能会帮助将来的人。您实际上可以只用一行启用建议右侧的箭头。这称为查询细化。启用查询优化将显示箭头,单击该箭头将重写您的查询文本,然后您可以对其进行编辑并稍后提交。这是我项目中的一个示例。

searchView.apply {
            setSearchableInfo(searchManager.getSearchableInfo(componentName))
            isQueryRefinementEnabled = true
        }

这里的重要部分是isQueryRefinementEnabled = true

于 2020-04-16T06:26:44.133 回答
-1

可以帮助某人,这正是问题所要求的。 http://www.shmoula.cz/howto-access-recent-query-suggestions-on-android-and-populate-listview-with-them/

主要思想是查询 SearchRecentSuggestionsProvider 并填充列表。我们可以这样做,

ContentResolver contentResolver = getApplicationContext().getContentResolver();

String contentUri = "content://" + MySuggestionProvider.AUTHORITY + '/' + SearchManager.SUGGEST_URI_PATH_QUERY;
Uri uri = Uri.parse(uriStr);

Cursor cursor = contentResolver.query(uri, null, null, new String[] { query }, null);
于 2017-06-19T12:29:49.710 回答