使用Google搜索应用等自定义列表视图搜索建议

时间:2013-07-30 17:33:16

标签: android android-custom-view searchview

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

我想要像谷歌搜索应用程序here's a screenshot那样做。

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

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

有人可以帮我吗?

谢谢!

3 个答案:

答案 0 :(得分:1)

您必须制作自定义列表适配器。

请参阅此处如何制作。 https://stackoverflow.com/a/8166802/661074

然后,在你的适配器中,你将为该“右箭头”提供一个onClick()监听器。在听众中,我会发起一个通知活动的事件。

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

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

答案 1 :(得分:0)

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

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

这里重要的部分是 isQueryRefinementEnabled = true

答案 2 :(得分:-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);