반응형
안드로이드(Android) AutoCompleteTextView 위젯을 이용해 단어 자동완성기능 구현 |
환경 : Eclipse Mars, Android 4.2.2 |
이번에는 단어 자동완성기능이 간단한 샘플을 구현해 봅니다. 포털사이트에서 검색어 입력시 완성하지 않아도 그와 유사한 단어를 뿌려주며 사용자가 편리하고 신속하고 단어를 입력할수 있도록 도와주는 기능입니다.
▼ 안드로이드에서 단어완성 기능은 AutoCompleteTextView 을 이용합니다. 이 위젯은 EditText 위젯을 상속받아 확장해서 만든 위젯입니다. 먼저 onCreate 함수에서 AutoCompleteTextView 객체를 셋팅하는데 자동으로 검색되도록 검색할 단어들을
ArrayAdapter 로 만들어서 인수로 넘깁니다.
autoComplete = (AutoCompleteTextView) findViewById(R.id.myautocomplete); autoComplete.addTextChangedListener(this); autoComplete.setAdapter(new ArrayAdapter<String>( this, android.R.layout.simple_dropdown_item_1line, item)); autoComplete.setTextColor(Color.RED);
▼ 그리고 키보드에 단어를 입력할 때 마다 이벤트를 가져올수 있는데 addTextChangedListener() 함수의 인수로 TextWatcher 인터페이스를 넘기고 그에 대한 함수를 구현하면 됩니다. TextWatcher 는 메인 activity 에 implements 합니다.
public void afterTextChanged(Editable arg0) { // TODO Auto-generated method stub } public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub }
▼ 메인 activity 를 구현한 화면 레이아웃 xml 입니다.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:background="#3F0099" android:paddingBottom="@dimen/abc_action_bar_icon_vertical_padding" android:paddingTop="@dimen/abc_action_bar_icon_vertical_padding" android:text="AutoCompleteTextView 이용해 입력시 단어 자동완성기능" android:textColor="#FFFFFF" /> <AutoCompleteTextView android:id="@+id/myautocomplete" android:layout_width="fill_parent" android:layout_height="wrap_content" android:completionThreshold="1" /> </LinearLayout>
▼ 이렇게 구현한 activity 의 전체 소스에 대한 내용입니다.
import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; public class AutoCompleteTextViewActivity extends Activity implements TextWatcher { private AutoCompleteTextView autoComplete; private String item[] = {"C","C++","Java",".NET","iPhone", "Android","ASP.NET","PHP"}; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_auto_complete_text_view); autoComplete = (AutoCompleteTextView) findViewById(R.id.myautocomplete); autoComplete.addTextChangedListener(this); autoComplete.setAdapter(new ArrayAdapter<String>( this, android.R.layout.simple_dropdown_item_1line, item)); autoComplete.setTextColor(Color.RED); } public void afterTextChanged(Editable arg0) { // TODO Auto-generated method stub } public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub } }
반응형
'안드로이드 개발' 카테고리의 다른 글
안드로이드(Android) MediaPlayer 이용해 raw 폴더의 MP3 듣기 (0) | 2015.01.26 |
---|---|
안드로이드(Android) 행열(Matrix) 클래스의 postConcat() 함수이용해 거울이미지구현 (0) | 2015.01.25 |
안드로이드(Android) 비트맵 이미지를 다양한 방법으로 변형하는 예제 (0) | 2015.01.19 |
안드로이드(Android) 이미지다운로드해서 Sdcard 에 저장하기 (3) | 2015.01.15 |
안드로이드(Android) EditText 위젯의 입력타입별 예제 (0) | 2015.01.11 |
안드로이드(Android) raw 폴더에 있는 Text 파일 읽어 오기 (1) | 2015.01.08 |
안드로이드(Android) Chronometer 사용하여 시간측정을 위한 타이머 만들기 (1) | 2015.01.05 |
안드로이드(Android) Chronometer, OnChronometerTickListener 통해 시간알아오기 (2) | 2015.01.04 |