9

我正在对 ContentProviders 和 Searchable 配置进行一些研究。我已经设置了一个类,它使用一个数据库扩展了一个内容提供程序,该数据库在用户类型时提供来自数据库的建议。这使用了 Search Manager 范例(不是 SearchView)。

到目前为止,一切都很好。

我想做并且遇到问题的是在用户开始输入之前,在他启动搜索之后显示一些建议。在 searchable.xml 中设置属性 'android:searchSuggestThreshold="0" ' 仅当用户在启动搜索文本框后实际点击搜索文本框时才有效 - 我想在搜索启动后立即显示建议(即不等待用户做任何其他事情)。

有任何想法吗?

编辑:我所说的一个例子是 Google Play 商店应用程序中的搜索功能——当用户点击放大镜进行搜索时,会立即弹出最近的建议列表。

4

1 回答 1

3

好吧,在花了很多时间之后,我终于找到了一种方法来实现我所需要的。这是答案,因此可能会减少其他开发人员的痛苦:

搜索模式的 SearchView 有一个文本更改侦听器,只有在文本更改时才会触发建议请求。显然,对于初始状态,没有任何改变,因此它不会通过 query() 函数请求建议。

为了“欺骗” SearchView 认为文本已更改,您可以执行以下操作:

@Override
public boolean onSearchRequested()
{
  final SearchManager searchManager = (SearchManager) getSystemService( SEARCH_SERVICE );    

  searchManager.startSearch( " ", true, getComponentName(), null, false );

  return super.onSearchRequested();
}
于 2012-12-12T00:08:11.363 回答