AutoCompleteTextView 클래스를 사용하면 자동 완성 기능은 제공 할 수 있습니다.
이름은 TextView로 되어있지만 EditText의 서브 클래스입니다.
후보 문자열의 경우 어댑터로부터 받는다.
void setAdapter(T adapter)
completionThreshold 속성 : 몇 자까지 입력했을 때 후보 목록을 보여줄 거인가를 의미 보통 1이 무난
completionHint 속성 : 후보 목록 아래쪽에 도움말 문자열 지정
예제 소스
TextView 한개와 AutoCompleteTextView 한 개만 배치하였다.
activity_auto_complete.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="아래 에디트에 단어를 입력하시오."
/>
<AutoCompleteTextView
android:id="@+id/autoedit"
android:completionThreshold="1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:completionHint="목록에서 원하는 단어를 탭하세요"
/>
</LinearLayout>
자바 파일
AutoComplete.java
package com.example.autocomplete;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
public class AutoComplete extends Activity {
//자동완성을 위한 스트링 리스트
String[] arWords = new String[]{
"가구", "가로수", "가방", "가슴", "가치", "가훈", "나그네", "다리미",
"above", "about", "absolute", "access", "activity", "adjust"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_auto_complete);
//어댑터를 만들고 자동완성 스트링 리스트와 연결해줌
ArrayAdapter<String> adWord = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line, arWords);
AutoCompleteTextView autoEdit = (AutoCompleteTextView)findViewById(R.id.autoedit);
//어댑터 세팅해줌
autoEdit.setAdapter(adWord);
}
}
실행 화면
가를 치면 아래 자동문장 리스트가 나온다
만약 자동완성기능으로 여러 개의 단어를 입력받고 싶다면 MultiAutoCompleteTextView를 사용해야된다.
기존과는 다른점은 띄어쓰기나 콤마로 구분을 하니까 setTokenizer 메소드를 사용한다는 점이다.
예제는 다음과 같다.
acitivity_main.xml 파일
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="아래 에디트에 단어를 입력하시오."
/>
<MultiAutoCompleteTextView
android:id="@+id/autoedit"
android:completionThreshold="1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:completionHint="목록에서 원하는 단어를 탭하세요"
/>
</LinearLayout>
자바 파일
MainActivity.java
package com.example.ch13_autocomplete_2;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.MultiAutoCompleteTextView;
public class MainActivity extends Activity {
String[] arWords = new String[]{
"가구", "가로수", "가방", "가슴", "가치", "가훈", "나그네", "다리미",
"above", "about", "absolute", "access", "activity", "adjust"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayAdapter<String> adWord = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line, arWords);
MultiAutoCompleteTextView autoEdit = (MultiAutoCompleteTextView)
findViewById(R.id.autoedit);
autoEdit.setAdapter(adWord);
//AutoCompleteTextView와 다른점은 아래 한줄 뿐이다.
autoEdit.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
}
}
실행 화면
그리고 어댑터가 이해가 안되면 다음 링크로 가서 이해합시다.
'프로그래밍 > 안드로이드' 카테고리의 다른 글
안드로이드 - NumberPicker를 이용한 숫자 선택하는 위젯 만들기 (0) | 2015.08.16 |
---|---|
안드로이드 - 위젯의 배치를 편리하게 해주는 Space 위젯 (0) | 2015.08.16 |
안드로이드 - 스위치(Switch) 만들어서 편리하게 토글하기 (0) | 2015.08.16 |
안드로이드 - 웹뷰(WebView)로 웹페이지 보여주기 (0) | 2015.08.15 |
안드로이드 - 핸들러(Handler)를 이용한 간단한 스톱워치 만들기 (4) | 2015.08.09 |
안드로이드 - 크로노미터를 이용한 스톱와치 만들기 (0) | 2015.08.09 |
안드로이드 - 날짜 대화상자 시간 대화상자 만들기 (0) | 2015.08.09 |
안드로이드 - DatePicker 위젯을 이용한 날짜 입력 받기 (1) | 2015.08.08 |