23.12.15

KSang·2023년 12월 16일
0

TIL

목록 보기
13/101

스피너


드롭다운 메뉴

선택 항목 목록으로 스피너를 채우려면 Activity 또는 Fragment 소스 코드에 SpinnerAdapter를 지정해야 함
주요 클래스

  • Spinner
  • SpinnerAdapter
  • AdapterView.OnItemSelectedListener

사용자 선택 항목으로 스피너 채우기

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="planets_array">
        <item>Mercury</item>
        <item>Venus</item>
        <item>Earth</item>
        <item>Mars</item>
        <item>Jupiter</item>
        <item>Saturn</item>
        <item>Uranus</item>
        <item>Neptune</item>
    </string-array>
</resources>

이러한 배열과 함께 Activity 또는 Fragment에 다음 코드를 사용하여 ArrayAdapter의 인스턴스를 통해 스피너에 이러한 배열을 제공할 수 있다.

사용자 선택에 응답

class SpinnerActivity : Activity(), AdapterView.OnItemSelectedListener {

    override fun onItemSelected(parent: AdapterView<*>, view: View?, pos: Int, id: Long) {
        // An item was selected. You can retrieve the selected item using
        // parent.getItemAtPosition(pos)
    }

    override fun onNothingSelected(parent: AdapterView<*>) {
        // Another interface callback
    }
}

AdapterView.OnItemSelectedListener에는 onItemSelected()와 onNothingSelected() 콜백 메서드가 필요합니다.

그런 후 setOnItemSelectedListener()를 호출하여 인터페이스 구현을 지정해야 합니다

Focus

setOnFocusChangeListener

사용자가 포커스가 바꼈는지 불리언값으로 확인한다

inputEmail.setOnFocusChangeListener { _, hasFocus ->
            if (!hasFocus && inputEmail.text.isEmpty()) {
                emailSpinner.visibility = View.VISIBLE
            } else {
                inputEmail.error = null
                emailSpinner.visibility = View.INVISIBLE
            }
        }

TextWatcher

editText에 입력한 값을 실시간으로 관찰하면서 입력값에 따른 처리를 해야 할 때 쓰는 인터페이스

val watcher = object : TextWatcher {
            override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int){}
            override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {}
            override fun afterTextChanged(s: Editable?) {

텍스트 치기전

치는중

친후로 나눠서 처리할 수 있다

0개의 댓글