Android

[안드로이드/AdapterView] AutoCompleteTextView

gangmini 2023. 2. 27. 18:44
반응형

AutoCompleteTextView

  • 사용자 입력을 받는 EditText 기능에 자동완성 기능을 추가한 View 
  • 개발자가 설정해놓은 자동완성 문자열 항목 리스트를 제공해도 되고, 사용자가 그동안 입력했던 문자열을 모두 저장해놓고 자동완성 리스트로 제공해도 됨
  • 문자열을 입력하다가 자동완성 리스트에 존재하는 문자열과 같은 문자열이 나오면 리스트 나옴

AutoCompleteTextView 주요 메소드

  • setAdapter : Adapter를 메서드를 통해 설정 -> getter만 제공하고 있어서 setAdapter 메소드를 이용 (그동안은 주로 프로퍼티로 설정)
val adapter1 = ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, data1)
//autoCompleteTextview 에서 사용하는 기본 레이아웃

binding.autoCompleteTextView.setAdapter(adapter1)

AutoCompleteTextView 주요 프로퍼티

  • text : 사용자가 입력한 문자열

AutoCompleteTextView 주요 속성

  • completionThreshold : 몇 글자를 입력했을 때 자동완성 리스트가 나타날지 설정 ex). 자동완성 리스트에 banana가 있지만 theshold가 2면 'b' 를 입력하는 것으로 리스트 나타나지 않음. 최소 'ba'는 쳐야 나옴 (0 입력 : 처음부터 리스트가 나오는것은 아니지만 문자열을 입력했다가 전체 삭제 했을 때 리스트 전체가 나옴)

 

** 아래 메서드는 해당 코드로 경우에 따라 제대로 작동하지 않음 **

AutoCompleteTextView 주요 이벤트

  • ItemClick : 제공되는 자동완성 리스트의 항목을 클릭할 경우 발생 (오버라이딩할 메소드 1개라 고차함수로 작성 가능)
// 고차함수로 작성
binding.autoCompleteTextView.setOnItemClickListener { adapterView, view, i, l ->
            binding.textView2.text = "${data1[i]} 항목을 클릭"
}
binding.autoCompleteTextView.setOnItemClickListener(listener1)

} //OnCreate() 끝
    val listener1 = object : AdapterView.OnItemClickListener {
        override fun onItemClick(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) {
            binding.textView2.text = "${data1[p2]} 항목을 클릭"
            /*
            when (p0?.id) { // p0 으로 선택한 뷰가 들어오질 않아 동작 x
                R.id.autoCompleteTextView -> {
                    binding.textView2.text = "${data1[p2]} 항목을 클릭"
                }
            }
             */
        }
    }

 

[메서드 및 코드 사용 주의 -> 첨부 포스트 참고]

https://studyroadmap-kkm.tistory.com/76

 

[안드로이드/AdapterView] MultiAutoCompleteTextView

MultiAutoCompleteTextView 구분자를 이용해 여러 문자열을 동시에 입력받을 수 있고, AutoCompleteTextView 와 동일하게 문자열 자동완성 기능 구분자 설정 메서드 외에는 주요 속성, 메소드, 이벤트도 동일 M

studyroadmap-kkm.tistory.com

 

반응형