Please Enable JavaScript!
Gon[ Enable JavaScript ]

반응형

안드로이드(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) AutoCompleteTextView 위젯을 이용해 단어 자동완성기능 구현

 

반응형
Posted by 녹두장군1
,