이전 포스트에서 리스트뷰의 검색에대해 알아보았다.
이번에는 리스트뷰와 비슷하지만 다른 AutoCompleteTextView 에 대해 알아본다.
AutoCompleteTextView는 주 기능은 자동완성 기능이다. 네이버 사이트에서 검색어를 입력할때 input창 아래에 관련 단어 또는 문장이 나오는 것과 같은 기능이라 보면된다.
하지만 AutoCompleteTextView는 리스트뷰, 네이버와 다른점은 단어 또는 문장의 맨 첫문자부터 같은 문자의 검색이 이루어지는 것이다.
리스트뷰나 네이버에서 "수"를 검색하면 "채수빈, 수지" 등이 검색되지만, AutoCompleteTextView에서는 검색어 "수"가 맨 첫문자에만 매치되는 "수지"만 검색이 된다.
AutoCompleteTextView는 생소하기 하지만, 꽤 간단한 코딩으로 이루어진다.
우선 레이아웃을 보겠다.
* activity_main02.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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">
<LinearLayout
android:layout_width="368dp"
android:layout_height="495dp"
android:orientation="vertical"
tools:layout_editor_absoluteY="8dp"
tools:layout_editor_absoluteX="8dp">
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="left|center_vertical"
android:paddingLeft="5dp"
android:textColor="#000000"
android:textSize="20dp"
android:text="AutoCompleteTextView Sample"
android:background="@color/colorAccent"/>
<AutoCompleteTextView
android:id="@+id/autoCompleteTextView"
android:layout_width="match_parent"
android:layout_height="45dp"
android:gravity="center_vertical"
android:textColorHint="#555555"
android:completionHint="검색어를 입력하세요."
android:completionThreshold="1" />
</LinearLayout>
</android.support.constraint.ConstraintLayout>
위와 같이 정의한다.
android:completionHint 는 검색시 검색 리스트 맨 하단에 뜨는 문장이다.
android:completionThreshold 는 검색어가 최소 몇자리일때 자동완성 검색기능을 실행할 것인가이다.
android:completionThreshold="2" 라면 "수"라는 한자리 문자에서는 검색이 시작안되고 "수빈"이라는 두자의 검색부터 자동완성 검색이 실행된다.
* MyAutoCompleteTextView
package com.studio572.searchlistview;
import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Administrator on 2017-08-08.
*/
public class MyAutoCompleteTextView extends Activity {
private List<String> list; // 데이터를 넣은 리스트변수
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main02);
// 리스트를 생성한다.
list = new ArrayList<String>();
// 리스트에 검색될 데이터(단어)를 추가한다.
settingList();
final AutoCompleteTextView autoCompleteTextView = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView);
// AutoCompleteTextView 에 아답터를 연결한다.
autoCompleteTextView.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line, list ));
}
// 검색에 사용될 데이터를 리스트에 추가한다.
private void settingList(){
list.add("채수빈");
list.add("박지현");
list.add("수지");
list.add("남태현");
list.add("하성운");
list.add("크리스탈");
list.add("강승윤");
list.add("손나은");
list.add("남주혁");
list.add("루이");
list.add("진영");
list.add("슬기");
list.add("이해인");
list.add("고원희");
list.add("설리");
list.add("공명");
list.add("김예림");
list.add("혜리");
list.add("웬디");
list.add("박혜수");
list.add("카이");
list.add("진세연");
list.add("동호");
list.add("박세완");
list.add("도희");
list.add("창모");
list.add("허영지");
}
}
AutocompleteTextView 의 변수에 아답터를 연결하다. 이 때 아답터 안드로이드 SDK에 기본으로 정의 되어있는 android.R.layout.sample_dropdown_item_1line 을 사용한다.
사용자 정의 아답터( Custom Adapter )는 사용 가능한지 아직 테스를 안해보아서, 이는 확인이 안되었다.
그리고 마지막 매개변수 'list' 를 넘겨준다. 이때 'list'는 List<> 형식의 데이터든 Array배열의 데이터든 상과없이 사용이 가능하다.
'프로그래밍 > 안드로이드' 카테고리의 다른 글
[안드로이드] 쉐어드 프리퍼런스 저장/불러오기 (Shared Preference) (2) | 2017.08.13 |
---|---|
[안드로이드] xml selector - 버튼 눌림(클릭) 효과 커스텀하여 만들기 (1) | 2017.08.12 |
[안드로이드] 리스트뷰 검색 기능 구현 (android ListView search) (15) | 2017.08.10 |
[안드로이드] 커스텀 다이얼로그 ( Custom Dialog ) 만들기 (3) | 2017.08.09 |
[안드로이드] ListView paging ( 리스트뷰 스크롤이 맨 하단으로 갔을 때 페이징 )처리 (0) | 2017.08.08 |
댓글