9

私はContentProvidersと検索可能な構成についていくつかの調査を行っています。ユーザーが入力するとデータベースからの提案を提供するデータベースを使用してコンテンツプロバイダーを拡張するクラスを設定しました。これは、(SearchViewではなく)SearchManagerパラダイムを使用します。

この時点まで、すべてがうまく機能しています。

私がやりたいことで問題が発生しているのは、ユーザーが検索を開始した後、入力を開始する前にいくつかの提案を表示することです。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 に答える