C/C++プログラマの管理者が, Androidプログラムにチャレンジ. AndroidプログラミングのTipsをメモっていく予定です.

オートコンプリート機能(*1)を実現する方法は2通りある.
  • オートコンプリートテキストビュー(AutoCompleteTextView)クラス
  • マルチオートコンプリートテキストビュー(MultiAutoCompleteTextView)クラス
(*1) 候補となる文字列をリスト表示して, リストから選択して文字列を入力する入力補助機能

AutoCompleteTextViewクラス

  • res/layout/main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  >
  <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/msg_lable"
    />
  <AutoCompleteTextView android:id="@+id/actview_id"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    />
</LinearLayout>
  • AutoCompleteTextViewActivity.java
    • findViewByIdメソッドで, 指定したリソースインデックスのIDに対応したAutoCompleteTextViewのインスタンスを取得する.
    • ArrayAdapterのインスタンスを生成する.
    • AutoCompleteTextView#setAdapterメソッドで, アダプターを設定する.
package com.moonlight_aska.android.autocompletetextview;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;

public class AutoCompleteTextViewActivity extends Activity {
  private static final String[] countryList = new String[] {
    "Japan", "Korea", "China", "Italy", "France", "Germany", "Spain"
  };
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // AutoCompleteTextViewのインスタンスを取得
    AutoCompleteTextView actView = (AutoCompleteTextView)findViewById(R.id.actview_id);
    // Adapterのインスタンスを生成
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
        android.R.layout.simple_dropdown_item_1line, countryList);
    actView.setAdapter(adapter);
  }
}


MultiAutoCompleteTextViewクラス

自動的に区切り(例","(カンマ))を追記し, 区切りの後ろでも入力補完が行える.

  • res/layout/main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  >
  <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/msg_lable"
    />
  <MultiAutoCompleteTextView android:id="@+id/mactview_id"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    />
</LinearLayout>
  • MultiAutoCompleteTextViewActivity.java
    • findViewByIdメソッドで, 指定したリソースインデックスのIDに対応したMultiAutoCompleteTextViewのインスタンスを取得する.
    • ArrayAdapterのインスタンスを生成する.
    • AutoCompleteTextView#setAdapterメソッドで, アダプターを設定する.
    • MultiAutoCompleteTextView#setTokenizerメソッドで, 区切りを設定する.
package com.moonlight_aska.android.multiautocompletetextview;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.MultiAutoCompleteTextView;

public class MultiAutoCompleteTextViewActivity extends Activity {
  private static final String[] countryList = new String[] {
    "Japan", "Korea", "China", "Italy", "France", "Germany", "Spain"
  };
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // MultiAutoCompleteTextViewのインスタンスを取得
    MultiAutoCompleteTextView mactView = (MultiAutoCompleteTextView)findViewById(R.id.mactview_id);
    // Adapterのインスタンスを生成
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
        android.R.layout.simple_dropdown_item_1line, countryList);
    mactView.setAdapter(adapter);
    mactView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
  }
}





コメントをかく


ユーザーIDでかく場合はこちら
「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu


逆引き(基礎編)

画面表示/操作(49)

フラグメント(1)

逆引き(応用編)

AD



管理人のみ編集できます