オートコンプリート機能をTextに付加する。

テキストを入力しする場合に、ある程度限られたものを検索する場合はオートコンプリート機能であらかじめ、入力されるであろう文字を登録しておく事で、ユーザーの負荷を減らす事ができます。

 

autoComplete

 

AutoCompleteTextを利用して簡単に作成ができるようになっており、通常のEditTextと同様に使える編集エリアとして、更に便利に利用が可能となります。

文字の配列を利用して作成をできます。配列に関しては、[スクリプト内で作成]と[xmlからの利用]の二通りがあります。

 

どちらとも最初にautoCompleteを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"
 >
 <AutoCompleteTextView 
 android:text="day" 
 android:id="@+id/autoCompleteTextView1" 
 android:layout_width="fill_parent" 
 android:layout_height="wrap_content"></AutoCompleteTextView>
</LinearLayout>

利用をする際には、textの値が最低2文字以上入っている必要があります。今回のサンプルで、day1~day7までを表示させる為にAutoCompleteTextを利用をし、dayと言う文字を最初から入力した状態ではじめる。

またadapterを利用します。初期設定で用意しておくものは以下になります。

private ArrayAdapter<CharSequence> adapter;
private AutoCompleteTextView _autoCompleteTextView;

 

スクリプト内で作成

 

スクリプトで、配列を作成してそれをオートコンプリート機能に補完をします。これを利用できると、外部からxmlを読み込んで、中に入れ込む事ができたり便利だと思います。

 

addを使って中に読み込む方法

package in.andante.android;

import in.andante.android.R;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;

public class AutoComp extends Activity {
 /** Called when the activity is first created. */
 private ArrayAdapter<CharSequence> adapter;
 private AutoCompleteTextView _autoCompleteTextView;

 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);
 adapter = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_dropdown_item_1line);
 adapter.add("day1");
 adapter.add("day2");
 adapter.add("day3");
 adapter.add("day4");
 adapter.add("day5");
 adapter.add("day6");
 adapter.add("day7");
 _autoCompleteTextView = (AutoCompleteTextView)findViewById(R.id.autoCompleteTextView1);
 _autoCompleteTextView.setAdapter(adapter);
 }
}

以上で、addで追加をする事で、確認ができます。

 

CharSequenceを利用して下記のように表記もできます。

package in.andante.android;

import in.andante.android.R;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;

public class AutoComp extends Activity {
 /** Called when the activity is first created. */
 private ArrayAdapter<CharSequence> adapter;
 private AutoCompleteTextView _autoCompleteTextView;

 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);
 CharSequence[] words = {"day1","day2","day3","day4","day5","day6","day7"};
 adapter = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_dropdown_item_1line,words);
 _autoCompleteTextView = (AutoCompleteTextView)findViewById(R.id.autoCompleteTextView1);
 _autoCompleteTextView.setAdapter(adapter);
 }
}

どちらも便利な形ですが、下の方が若干分かりやすいでしょうか。android.R.layout.simple_spinner_itemなどの定数に関しては、アンドロイドで用意されているレイアウトに沿ってオートコンプリートの文字を表示しております。

 

xmlからの利用

 

xmlでの利用となると、実際にjavaをいじらずに修正ができる為、ソースコードが増えた時でも、簡単に修正が可能です。

以前作成したように(配列のデータを定数で扱う(from XML))配列のxmlを作成しましょう。

<?xml version="1.0" encoding="utf-8"?>
<resources>
 <array name="day">
 <item>"day1"</item>
 <item>"day2"</item>
 <item>"day3"</item>
 <item>"day4"</item>
 <item>"day5"</item>
 <item>"day6"</item>
 <item>"day7"</item>
 </array>
</resources>

上記を[res]の[values]の中に作成をします。

 

また、通常の利用に関しては

package in.andante.android;

import in.andante.android.R;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;

public class AutoComp extends Activity {
 /** Called when the activity is first created. */
 private ArrayAdapter<CharSequence> adapter;
 private AutoCompleteTextView _autoCompleteTextView;
 
 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);
 adapter = ArrayAdapter.createFromResource(this, R.array.day, android.R.layout.simple_dropdown_item_1line);
 _autoCompleteTextView = (AutoCompleteTextView)findViewById(R.id.autoCompleteTextView1);
 _autoCompleteTextView.setAdapter(adapter);
 }
}

上記のjavaでandroidで起動を行うと、文字入力の際にオートコンプリート機能で、補完を行う事が可能となります。

前後の記事

前の記事:

次の記事:

関連の記事

コメントの投稿

  • サイト内検索

新作アプリの紹介

関連サイトの紹介

アンドロイドアプリ開発TIPS
きぐるみカメラ
ふらいぱん
アンドロイドのデザイン集
Page top↑