Android

[Android] AutoCompleteTextView(자동완성 텍스트뷰)

jane.dev 2021. 10. 25. 19:55
반응형
AutoCompleteTextView
사용자가 입력하는동안 완료된 텍스트를 자동으로 보여줌

 

activity_main.xml 

먼저 View를 정의

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center|top">

    <AutoCompleteTextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/acv"
        android:hint="자동완성 검색창"
        android:completionHint="선택하기"
        android:completionThreshold="2" />

</LinearLayout>

android:completionHint 는 드롭다운 메뉴에 표시되는 힌트를 정의

android:completionThreshold 은 완료된 텍스트가 드롭다운 메뉴에 표시되기 전에 사용자가 입력해야하는 문자 수 정의

→ 2로 지정했기 때문에 두글자가 입력되어야 자동완성 텍스트가 메뉴에 표시됨

 

MainActivity.java

public class MainActivity extends AppCompatActivity {

    AutoCompleteTextView acv;
    MultiAutoCompleteTextView macv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        acv = (AutoCompleteTextView)findViewById(R.id.acv);

        // 검색창에 띄울 아이템을 List로 나열
        String [] items = {"android", "ios", "andrew", "rock and roll", "anniversary", "angel", "anxious", "ioniq", "iot", "ioi"};

        // 위젯과 데이터를 연결하기 위해 어댑터라는 개념을 사용
        // 파라미터 this와 simple_dropdown_item_1line은 고정, items를 넣어야하는 데이터에 맞춰 작성
        ArrayAdapter<String> adp = new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line, items);

        // setAdapter() 기능을 이용해 ArrayAdapter와 위젯 연결
        acv.setAdapter(adp);

    }
}

ArrayAdapter(Context context, int resource, List<T> objects)의 

context는 해당 activity context를 뜻하는 this,

android.R.layout.simple_dropdown_item_1line은 문자열들을 보여주는 리스트 형식,

item에 담긴 리스트를 호출하여 보기를 생성하고 결과를 TextView에 배치