布団の中にいたい

Elasticsearchいじったり、Androidアプリ書いたり。最近は数学の勉強が楽しくなってきました。

SearchViewを使用する

GmailFacebookアプリみたいな検索窓を実装したいなーと考え色々調べていると、SearchViewを使用する方法がだいぶ簡単そうだったので、試してみた。

SearchViewのdocumentは以下 SearchView | Android Developers

配置するだけならすごく簡単でToolbarのxmlにSearchViewのitemを配置するだけ。肝心なのは、actionViewClassにSearchViewのクラスを指定してあげることです。

<?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_search"
        android:title="Search"
        app:actionViewClass="android.support.v7.widget.SearchView"
        app:showAsAction="always"/>

</menu>

次にSearchViewからのアクションを扱う方法です。今回使用したのは、onQueryTextSubmitです。検索するクエリを入力したあとでsubmitした時に呼ばれるメソッドです。何かを検索する場合、onQueryTextSubmitをoverrideして、内部でAPIを叩く処理を書いたりするいいと思います(間違ってたらごめんなさい)。あとは検索したときのProgressBarを見えるようにするとかかな。

override fun onQueryTextSubmit(query: String?): Boolean {
    // queryがsubmitされたときに期待する動作を記述する
}