멀티 자동완성 텍스트뷰(MultiAutoCompleteTextView)

참고 프로젝트: MultiAutoCompleteTextViewDemoA1

멀티 자동완성 텍스트뷰는 사용자 입력을 자동으로 완성해주는 텍스트뷰(TextView)이다. 멀티 자동완성 텍스트뷰는 자동완성 텍스트뷰와 한 가지 차이점을 제외하고는 동일하다.

  • 여러 개의 단어 완성
  • 토크나이저 설정 필요(CommaTokenizer: 쉼표로 단어들을 구분)

자동완성 텍스트뷰는 한 개의 단어만을 자동으로 완성시켜 주며, 멀티 자동완성 텍스트뷰는 여러 개의 단어를 자동으로 완성시켜 준다. 그래서 멀티 자동완성 텍스트뷰는 자동완성 텍스트뷰를 기반으로 만들어졌다.

java.lang.Object
  ↳ android.view.View
     ↳ android.widget.TextView
       ↳ android.widget.EditText
         ↳ android.widget.AutoCompleteTextView
           ↳ android.widget.MultiAutoCompleteTextView

"sm"을 입력하면 자동완성 리스트가 화면에 보여지며, 다시 콤마를 쓰고 "sm"을 입력하면 또 자동완성 리스트가 화면에 보여진다. 만약 멀티 자동완성 텍스트뷰가 아니고 자동완성 텍스트뷰였다면, 최초 한 번만 자동완성 리스트가 보여졌을 것이다.


그림 3-10

멀티 자동완성 텍스트뷰의 속성은 자동완성 텍스트뷰와 크게 다르지 않다.

코드 AutoCompleteTextView ```<?xml version="1.0" encoding="utf-8"?>

<MultiAutoCompleteTextView
    android:id="@+id/edit"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:completionHint="pick an item"
    android:completionThreshold="2" />

</LinearLayout>


**android:completionHint="pick an item"**  
문자열 리스트 하단에 표시할 문자열이다.

**android:completionThreshold="2"**  
사용자가 입력한 글자가 몇 글자일 때 문자열 리스트를 보여줄지를 지정하는 속성이다.

사용자가 문자열 입력 시 자동으로 보여줄 문자열들은 ArrayAdapter를 사용해서 멀티 자동완성 텍스트뷰에 설정해야 한다. 다음은 이러한 코드를 보여준다.

**코드 Main.java**
```package com.androidside.multiautocompletetextviewdemoa1;

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

public class Main extends Activity {
    String[] items = { "SM3", "SM5", "SM7", "SONATA", "AVANTE", "SOUL", "K5",
            "K7" };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        MultiAutoCompleteTextView edit = 
                (MultiAutoCompleteTextView) findViewById(R.id.edit);
        edit.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
        edit.setAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_dropdown_item_1line, items));
    }
}

이 코드에서 가장 중요한 코드는 MultiAutoCompleteTextView.CommaTokenizer()이다. 이 코드의 기능으로 인해 여러 단어를 구분하여 매번 자동완성 리스트가 보여질 수 있는 것이다. 현재는 단어를 콤마(,)로만 구분할 수 있는 토크나이저를 제공하고 있으므로, 다른 문자를 이용하고 싶다면 직접 만들어서 사용해야 한다.

ArrayAdapter의 android.R.layout.simple_dropdown_item_1line는 문자열들을 보여주는 리스트 모양이며, items는 화면에 보여질 문자열들을 가지고 있는 문자열 배열이다.

자동완성 텍스트뷰와 관련된 속성을 살펴보고 싶다면 다음 링크를 참고하기 바란다.
URL http://www.androidside.com/docs/reference/android/widget/MultiAutoCompleteTextView.html

results matching ""

    No results matching ""