ActionBar Sherlockを使用して、プロジェクトの1つに検索機能を実装しました。これで、公式のABシャーロックプロジェクトリポジトリ(github上)のサンプルのように、ActionBarに検索編集テキストが表示されます:折りたたみ可能なアクションアイテム
検索編集テキストは、アクティビティ内のListViewをフィルタリングしています。ユーザーがいくつかの文字を入力し始めると、ListViewはフィルタリングされます。私はtextWatcherを検索に追加することによってそれを行いました次のようにテキストを編集します:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(Menu.NONE, SEARCH_ACTION_MENU, 0, "Search")
.setIcon(R.drawable.ic_search)
.setActionView(R.layout.search_edittext)
.setShowAsAction(
MenuItem.SHOW_AS_ACTION_ALWAYS
| MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
/** We get a reference to the search edit */
MenuItemWrapper menuItemWrapper = (MenuItemWrapper) menu.getItem(0);
final EditText searchEdit = (EditText) menuItemWrapper.getActionView();
/** We add a listener search filter listener */
searchEdit.addTextChangedListener(filterWatcher); // filterwatcher is a textWatcher
return true;
}
検索アイコンをクリックすると、検索テキストの編集が表示され、ユーザーは入力を開始できます。また、ホームボタンは「上向きホームボタン」(左矢印付き)として表示されます。
この矢印をクリックすると検索テキストビューが非表示になりますが、ユーザーがすでに入力を開始している場合、ユーザーがホームの[上へ]をクリックした後に検索テキストビューが表示されなくなっても、リストビューはフィルタリングされ、リセットされません。 " ボタン。
私の質問は、 「上へ」ボタンのクリックをインターセプトしてリストビューをリセットするにはどうすればよいですか?これがリストをリセットできる唯一の方法だと思います。
私はすでに試しました:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Log.d(Constants.LOG_TAG, "Home button clicked");
return true;
default:
return super.onOptionsItemSelected(item);
}
}
「ホームボタン」が「上」ボタンとして表示されている場合は動作しません。
どんな助けでもいただければ幸いです。
前もって感謝します、