본문 바로가기
안드로이드 코틀린

[Kotlin][Android] 검색어 자동완성 기능 만들기

by teamnova 2021. 7. 2.
728x90

안드로이드에서 제공하는 autoCompleteTextView를 사용해서 자동 완성기능을 만들어보겠습니다.

autoCompleteTextView 란?

사용자가 입력하는 동안 완성 제안을 자동으로 표시하는 편집 가능한 텍스트뷰 입니다.

 

참고)

developer.android.com/reference/android/widget/AutoCompleteTextView


먼저 예제에 사용할 화면을 만들어보겠습니다.

 

 

<activity_main.xml>

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/titleView"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_marginTop="16dp"
        android:background="@color/white"
        android:gravity="left|center_vertical"
        android:text="검색어 자동완성"
        android:textAlignment="center"
        android:textColor="#000000"
        android:textSize="20dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:ignore="RtlCompat" />

    <AutoCompleteTextView
        android:id="@+id/autoCompleteTextView"
        android:layout_width="match_parent"
        android:layout_height="45dp"
        android:layout_marginBottom="420dp"
        android:completionHint="검색어를 입력해주세요."
        android:completionThreshold="1"
        android:gravity="center_vertical"
        android:textColorHint="#555555"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="1.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/titleView"
        app:layout_constraintVertical_bias="0.343" />

</androidx.constraintlayout.widget.ConstraintLayout>

다음 예제에 사용할 코드를 작성하겠습니다.

 

<MainActivity.kt>

 

1. 예제에 사용할 변수 생성

 

 

2. 검색어 자동 완성 기능 생성

 

검색어 자동 완성 기능을 만들기 위해 이벤트를 추가합니다.

 

스틱코드를 활용한다면, 클래스에서 'au' 까지만 작성했을 때 '검색어 자동완성 기능 생성' 이벤트가 나타납니다.

 

 

'검색어 자동완성 기능 생성' 이벤트를 누를 경우 코드가 자동으로 완성됩니다.

 

 

<최종코드>

import android.widget.ArrayAdapter
import android.os.Bundle
import android.widget.AutoCompleteTextView
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // 자동완성으로 보여줄 내용들
        var items = arrayOf("SM3", "SM5", "SM7", "SONATA", "AVANTE", "SOUL", "K5", "K7")

        var autoCompleteTextView = findViewById<AutoCompleteTextView>(R.id.autoCompleteTextView)

        var adapter = ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, items)
        autoCompleteTextView.setAdapter(adapter)
    }
}

프로젝트를 실행하면 아래 사진과 같이 검색어 자동 완성 기능이 되는 것을 확인하실 수 있습니다.

 

 

참고한 스틱코드)

stickode.com/detail.html?no=2191