Android
 Computer >> コンピューター >  >> プログラミング >> Android

AndroidのAutoCompleteTextViewにアダプタを設定する方法をわかりやすく解説

AutoCompleteTextViewとは?

AutoCompleteTextView(オートコンプリートテキストビュー)は、Androidで入力補完機能を実現するためのウィジェットです。通常のEditTextのサブクラスであり、EditTextと同様にユーザーが文字を入力できますが、最大の特徴は候補リストをドロップダウン形式で表示できる点にあります。

AutoCompleteTextViewを使用する際には、閾値(Threshold)を設定する必要があります。例えば、Thresholdを「1」に設定した場合、ユーザーが1文字入力した時点で、その文字に一致する候補が自動的に表示されるようになります。

本記事では、AutoCompleteTextViewにアダプタを設定して、入力候補を表示させる具体的な手順をサンプルコードとともに解説します。

実装手順

ステップ1:新規プロジェクトを作成する

Android Studioを開き、File → New Projectを選択して、必要な情報を入力し、新しいプロジェクトを作成します。

ステップ2:レイアウトファイルを編集する

res/layout/activity_main.xmlに以下のコードを追加します。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
   xmlns:app="https://schemas.android.com/apk/res-auto"
   xmlns:tools="https://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:gravity="center"
   android:orientation="vertical"
   tools:context=".MainActivity">
   <AutoCompleteTextView
      android:id="@+id/autoComplete"
      android:layout_width="fill_parent"
      android:hint="Enter programming language"
      android:layout_height="wrap_content" />
</LinearLayout>

上記のコードでは、AutoCompleteTextViewを宣言しています。ユーザーが文字を入力すると、その文字に対応する候補リストがドロップダウンメニューとして表示されます。

ステップ3:MainActivity.javaを実装する

src/MainActivity.javaに以下のコードを追加します。

package com.example.andy.myapplication;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.Toast;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
   RadioButton radioButton;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      final AutoCompleteTextView autoCompleteTextView=findViewById(R.id.autoComplete);
      ArrayList arrayList=new ArrayList<>();
      arrayList.add("Android");
      arrayList.add("JAVA");
      arrayList.add("CPP");
      arrayList.add("C Programming");
      arrayList.add("Kotlin");
      arrayList.add("CSS");
      arrayList.add("HTML");
      arrayList.add("PHP");
      arrayList.add("Swift");
      ArrayAdapter arrayAdapter=new ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, arrayList);
      autoCompleteTextView.setAdapter(arrayAdapter);
      autoCompleteTextView.setThreshold(1);
      autoCompleteTextView.addTextChangedListener(new TextWatcher() {
         @Override
         public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            Log.d("beforeTextChanged", String.valueOf(s));
         }
         @Override
         public void onTextChanged(CharSequence s, int start, int before, int count) {
            Log.d("onTextChanged", String.valueOf(s));
         }
         @Override
         public void afterTextChanged(Editable s) {
            Log.d("afterTextChanged", String.valueOf(s));
         }
    });
   }
}

コードのポイント

このコードでは、以下のような処理を行っています。

  • ArrayListに候補データを格納:「Android」「JAVA」「CPP」などのプログラミング言語名をリストに追加しています。
  • ArrayAdapterを作成:ArrayListのデータをArrayAdapterに渡し、ドロップダウン用の標準レイアウト「simple_dropdown_item_1line」を指定しています。
  • setAdapter()でアダプタを設定:作成したArrayAdapterをAutoCompleteTextViewにセットすることで、入力候補の表示が可能になります。
  • setThreshold(1)で閾値を設定:1文字入力した時点で候補が表示されるようにしています。
  • TextWatcherでテキスト変化を監視:入力前・入力中・入力後の各タイミングでログを出力しています。

アプリの実行と動作確認

それでは、アプリケーションを実行してみましょう。実際のAndroid端末をパソコンに接続していることを前提とします。Android Studioからプロジェクト内のアクティビティファイルを開き、ツールバーのRunアイコンをクリックしてください。接続済みのモバイルデバイスを選択すると、アプリが起動し、以下のような初期画面が表示されます。

AndroidのAutoCompleteTextViewにアダプタを設定する方法をわかりやすく解説

初期状態では、上記のように空のテキストフィールドが表示されます。ここに「ja」と入力すると、アダプタに登録されたデータから該当する候補が表示されます。

AndroidのAutoCompleteTextViewにアダプタを設定する方法をわかりやすく解説

上記の結果では候補が1件だけ表示されています。「J」を削除して「c」と入力すると、複数の候補が同時に表示されることが確認できます。

AndroidのAutoCompleteTextViewにアダプタを設定する方法をわかりやすく解説

まとめ

AutoCompleteTextViewにアダプタを設定すれば、少ないコード量でGoogle検索のような入力補完UIを簡単に実装できます。重要なのは、①候補データを用意する、②ArrayAdapterを作成する、③setAdapter()で紐付ける、④setThreshold()で表示タイミングを制御する、という4つのステップです。ぜひご自身のプロジェクトでも活用してみてください。

  1. Androidアプリでテキストファイルを簡単に読み込む方法【サンプルコード付き】

    この記事では、Androidアプリでシンプルなテキストファイルを読み込む方法を、実際のサンプルコードとともにステップごとに解説します。res/rawフォルダに配置したテキストファイルを読み込み、画面に表示するまでの一連の流れを学ぶことができます。 ステップ1:プロジェクトの作成とテキストファイルの配置 まず、Android Studioで新しいプロジェクトを作成します。メニューから「File」→「New Project」を選択し、必要な項目をすべて入力してプロジェクトを作成しましょう。 続いて、新しいAndroidリソースディレクトリとして「raw」フォルダを作成し、読み込みたいテキストファ

  2. Androidでメッセージに自動返信する4つの方法|運転中・会議中・休暇中も安心

    普段からメッセージへの返信が早い人ほど、しばらく返信がないと相手が心配してしまうものです。Androidには自動返信機能が標準搭載されていませんが、アプリなどを活用すれば簡単に自動返信を設定できます。 いくつかのアプリを使えば、運転中、会議中、休暇中など手が離せないときに連絡してきた相手へ、自動で返信を送れるようになります。この記事では、Androidでメッセージに自動返信する方法を詳しく解説します。 Android Autoで運転中のメッセージに自動返信する 運転中の自動返信が主な目的なら、Android Autoを使えばワンタップで着信メッセージに返信できます。車載ナビがAndroid A