Android KotlinでSearchViewを使う方法!ListViewの検索機能を実装する手順を解説
はじめに
この記事では、Androidアプリ開発においてKotlinでSearchView(検索ビュー)を実装する方法を、ステップごとにわかりやすく解説します。SearchViewを活用すると、ListViewに表示したデータの中から、ユーザーが入力したキーワードに一致する項目をリアルタイムに絞り込んで表示できるようになります。
Step 1:新規プロジェクトを作成する
Android Studioを起動し、メニューから「File」→「New Project」を選択します。必要な項目をすべて入力して、新しいプロジェクトを作成しましょう。
Step 2:レイアウトファイル(activity_main.xml)を編集する
res/layout/activity_main.xml に以下のコードを追加します。ここでは、画面上部にSearchViewを配置し、その下にListViewを置く構成にしています。
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android" xmlns:tools="https://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/searchView" android:divider="#ad5" android:dividerHeight="2dp" /> <SearchView android:id="@+id/searchView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:iconifiedByDefault="false" android:queryHint="Search Here" /> </RelativeLayout>
iconifiedByDefault="false" を指定することで、SearchViewが最初から展開された状態になり、queryHint で検索ボックスに表示されるヒントテキストを設定できます。
Step 3:MainActivity.kt を実装する
src/MainActivity.kt に以下のコードを追加します。
import android.os.Bundle
import android.widget.ArrayAdapter
import android.widget.ListView
import android.widget.SearchView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
lateinit var searchView: SearchView
lateinit var listView: ListView
lateinit var list: ArrayList<String>
lateinit var adapter: ArrayAdapter<*>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
title = "KotlinApp"
searchView = findViewById(R.id.searchView)
listView = findViewById(R.id.listView)
list = ArrayList()
list.add("Apple")
list.add("Banana")
list.add("Pineapple")
list.add("Orange")
list.add("Mango")
list.add("Grapes")
list.add("Lemon")
list.add("Melon")
list.add("Watermelon")
list.add("Papaya")
adapter = ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list)
listView.adapter = adapter
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String): Boolean {
if (list.contains(query)) {
adapter.filter.filter(query)
} else {
Toast.makeText(this@MainActivity, "No Match found", Toast.LENGTH_LONG).show()
}
return false
}
override fun onQueryTextChange(newText: String): Boolean {
adapter.filter.filter(newText)
return false
}
})
}
}
コードのポイント
この実装の核となるのは setOnQueryTextListener() です。リスナーには2つのコールバックメソッドがあります。
- onQueryTextSubmit(): キーボードの検索ボタンが押されたときに呼ばれます。入力値がリストに含まれていれば
filterで絞り込みを行い、含まれていなければToastで「No Match found」と表示します。 - onQueryTextChange(): 検索ボックスの入力内容が変わるたびに呼ばれます。ここでも
filterを呼び出すことで、入力に応じてリストをリアルタイムに絞り込めます。
Step 4:AndroidManifest.xml を確認する
androidManifest.xml は以下のようになります。特別なパーミッションは不要です。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="https://schemas.android.com/apk/res/android" package="com.example.q11"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
アプリを実行してみよう
それでは、実際にアプリを起動してみましょう。実機のAndroidスマートフォンをPCに接続していることを前提としています。Android Studioでプロジェクト内のアクティビティファイルを開き、ツールバーのRunアイコン
をクリックしてください。接続済みのモバイルデバイスを選択すると、端末にアプリの初期画面が表示されます。


検索ボックスに文字を入力すると、それに合わせてListViewの項目がリアルタイムに絞り込まれます。たとえば「Apple」と入力すれば該当項目だけが表示され、リストに存在しないキーワードを送信すると「No Match found」というトーストが表示されることが確認できます。
-
【Android】スナックバー(Snackbar)の使い方をステップごとに解説
このチュートリアルでは、Androidアプリでスナックバー(Snackbar)を使用する方法を、サンプルコードとともに段階的に解説します。スナックバーは画面下部に短いメッセージを一時的に表示できるUIコンポーネントで、Toastとは異なり「再試行(RETRY)」などのアクションボタンを組み込めるのが大きな特徴です。 手順1:新規プロジェクトを作成する Android Studioを起動し、メニューから「File」→「New Project」を選択します。必要な項目をすべて入力して、新しいプロジェクトを作成しましょう。 手順2:レイアウトファイル(activity_main.xml)を編集する
-
【Android】NavigationViewの実装方法をステップごとに解説
この記事では、AndroidアプリでNavigationView(ナビゲーションビュー)を使用してドロワーメニューを実装する方法を、ステップごとに詳しく解説します。ハンバーガーアイコンから開閉できるサイドメニューは、多くのアプリで採用されている定番のUIです。ステップ1:新しいプロジェクトを作成するAndroid Studioを開き、File → New Project を選択して、必要な情報を入力し新しいプロジェクトを作成します。テンプレートには「Navigation Drawer Activity」を選ぶと、後の作業がスムーズになります。ステップ2:activity_main.xml にコ