我希望我最近的搜索建议[使用Action Bar Sherlock SearchView]显示在自定义列表视图中。默认的一个在左边有一个定时器/时钟图标,右边有最近的查询(文本)。
我想做一些类似谷歌搜索应用程序的事情,这里有一张截图。
单击右侧箭头时,只有搜索字段会填充查询,并且不会执行搜索操作。单击列表视图中的项目(文本)时,将调用搜索意图。
我已经实现了搜索和建议,只想为建议创建一个自定义列表视图。
有人能帮我吗?
谢谢!
我知道已经很晚了,但我会发布这篇文章,这样将来可能会对某人有所帮助。实际上,只需一行就可以启用建议右侧的箭头。它被称为查询精化。启用查询优化将显示箭头,单击该箭头将重写查询文本,然后您可以编辑并稍后提交。这是我的项目中的一个例子。
searchView.apply {
setSearchableInfo(searchManager.getSearchableInfo(componentName))
isQueryRefinementEnabled = true
}
这里的重要部分是isQueryRefinementEnabled=true
您将不得不制作一个自定义列表适配器。
看看这里如何制作。https://stackoverflow.com/a/8166802/661074
然后,在您的适配器中,您将有一个onClick()侦听器来侦听"右箭头"。在监听器中,我会触发一个通知活动的事件。
这是一个非常好的事件消息库。https://github.com/greenrobot/EventBus
然后,您的活动将收到包含有关单击项目的数据的消息。使用这些数据填充搜索字段。
可以帮助别人,这正是问题所要求的。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);