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

2016年12月25日(編集2016年12月25日)
このエントリーをはてなブックマークに追加

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

難易度

中級者向け

サンプルコード

Android-RecyclerView-Demo

Search Suggestion履歴削除

Search Suggestionを実装した場合は、削除処理も実装しておくべきです。

削除前
削除後

Search Suggestion履歴削除実装

Search Suggestionの実装方法はこちらの記事を参考にしてください。
このサンプルでは、メニューをクリックしてSearch Suggestionの履歴を削除します。

まずは、Menuに削除メニューを追加します。XMLに項目を記述します。

{project_folder}/res/menu/search.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を開きます。

Vector Asset

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

searchアイコン選択

先ほど追加したaction_clear_search_history項目に、searchアイコンを指定します。

{project_folder}/res/menu/search.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: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メソッドに、履歴削除の処理を実装します。

{project_folder}/ui/SearchRecyclerViewActivity.java
    @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と削除をセットで実装するのがオススメです。

Providing Search with SearchView (Android Development Patterns Ep 7)

関連記事

タグ検索で調べてみよう

Android7.0 UI