Android 2.2 の Action Bar にシンプルな検索ボックスを実装しました。ここで、検索ボックスにオートコンプリートを追加したいと思います。サーバーからのプロンプトを表示したいのですが、たとえば次のようになります。
- ユーザー書き込み「それ」
- ボックスから「It」を受け取り、サーバーに送信します
- サーバーの応答: "Item1"、"Item12"、"Item2"
- アプリはユーザー「Item1」、「Item12」、「Item2」を表示します - 問題はここにあります
- ユーザー書き込み「Item1」
- サーバーの応答「Item1」、「Item12」
等
検索ボックスからテキストを受け取り、サーバーに送信します。サーバーの応答データですが、検索ボックスの下にリストを実装する方法がわかりません。
Sherlock を使用せずに実装したいのですが、Android 2.2 で動作するはずです。
私のコード:
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_activity_actions, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
mSearchView = (SearchView) MenuItemCompat.getActionView(searchItem);
setupSearchView(searchItem);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onQueryTextChange(String arg0) {
// 1. get text from search box and send to my server
// 2. my server response and sent data
// 3. response from server should be display below search box
Log.d("onQueryTextChange", arg0);
return false;
}
@Override
public boolean onQueryTextSubmit(String arg0) {
Log.d("onQueryTextSubmit", arg0);
return false;
}
これが機能する関数ですが、 onQueryTextChange() からの結果を表示するように変更するにはどうすればよいですか?
private void setupSearchView(MenuItem searchItem) {
Log.d("setupSearchView", "enter");
if (isAlwaysExpanded()) {
mSearchView.setIconifiedByDefault(false);
} else {
searchItem.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM
| MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
}
SearchManager searchManager = (SearchManager)getSystemService(Context.SEARCH_SERVICE);
if (searchManager != null) {
List<SearchableInfo> searchables =searchManager.getSearchablesInGlobalSearch();
SearchableInfo info =searchManager.getSearchableInfo(getComponentName());
for (SearchableInfo inf : searchables) {
if (inf.getSuggestAuthority() != null
&& inf.getSuggestAuthority().startsWith("applications")){
info = inf;
}
}
mSearchView.setSearchableInfo(info);
}
mSearchView.setOnQueryTextListener(this);
}
誰でも私を助けることができますか?