Androidアプリ開発 Material design SearchView Search Suggestionの履歴を削除する

Androidアプリでは、Search Suggestionで溜まった履歴を削除することができます。
この記事は、Search Suggestionの履歴削除の実装方法を記載した記事です。
環境はAndroid 7.1 (API level 25) です。
環境
- OS X Yosemite
- Oracle jdk version 1.8.0_72
- Android Studio 2.2.0
- android sdk 24
- Gradle 2.2.0
難易度
中級者向け
サンプルコード
Search Suggestion履歴削除
Search Suggestionを実装した場合は、削除処理も実装しておくべきです。


Search Suggestion履歴削除実装
Search Suggestionの実装方法はこちらの記事を参考にしてください。
このサンプルでは、メニューをクリックしてSearch Suggestionの履歴を削除します。
まずは、Menuに削除メニューを追加します。XMLに項目を記述します。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
+<item
android:id="@+id/action_clear_search_history"
android:title="Clear Search History" />
<item
android:id="@+id/search"
android:icon="@android:drawable/ic_menu_search"
android:title="Search"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="ifRoom|collapseActionView" />
</menu>
削除アイコンを作成します。
appフォルダ → 右クリック → New → Vector Asset
でConfigure Images Assetを開きます。

Icon → Action
でsearchアイコンを選択してアイコンを作成します。

先ほど追加したaction_clear_search_history項目に、searchアイコンを指定します。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_clear_search_history"
+android:icon="@drawable/ic_search_black_24dp"
android:title="@string/action_clear_search_history" />
<item
android:id="@+id/book_search"
android:icon="@android:drawable/ic_menu_search"
android:title="Search"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="ifRoom|collapseActionView" />
</menu>
onOptionsItemSelectedメソッドに、履歴削除の処理を実装します。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_clear_search_history:
+SearchRecentSuggestions searchRecentSuggestions = new SearchRecentSuggestions(getApplicationContext(),
ItemSearchRecentSuggestionsProvider.AUTHORITY,
ItemSearchRecentSuggestionsProvider.MODE);
searchRecentSuggestions.clearHistory();
// show delete message
Toast.makeText(this, getString(R.string.action_clear_msg), Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}
以上で実装は完了です。
ビルド
ビルドしてアプリを立ち上げます。
Search Suggestionを表示します。

メニューからClear Search Historyを実行します。

履歴が削除されました。
まとめ
Search Suggestionの履歴削除は、Search Suggestionよりも楽に実装できます。
Search Suggestionを実装する場合は、Suggestionと削除をセットで実装するのがオススメです。