본문 바로가기

[Android/Kotlin] 안드로이드 Spinner 커스텀 해보기(2) feat. Hint 만들기

꿈꾸는블로그왕 2021. 1. 30.

안녕하세요. 이번에는 Spinner 위젯에 간단하게 Hint를 넣은 방법에 대해서 알아보겠습니다.

 

이전에는 Activity가 onCreate 될때마다 자동적으로 연도는 2021년 월은 1월이 자동으로 선택되었습니다.

 

2021/01/30 - [Android/Material Design] - [Android/Kotlin] 안드로이드 Spinner 커스텀 해보기 (1)

 

즉, Array의 첫번째 아이템이 선택되고 있습니다.

이러한 액션을 막거나 또는 사용자에게 Hint 메시지를 줄 수 있는 방법을 소개해 드립니다.

 

완성된 모습은 아래와 같습니다.

첫번째 항목인 연도와 월을 클릭하면 아무런 반응이 없습니다.

 

STEP01. Array 첫번째 항목에 Hint 값 추가하기

Array의 첫번째 요소에 연도와, 월을 추가했습니다. 

[strings.xml]

<resources>
    <string name="app_name">SpinnerExample</string>

    <string-array name="spinner_year">
        <item>연도</item>
        <item>2021</item>
        <item>2020</item>
        <item>2019</item>
        <item>2018</item>
        <item>2017</item>
        <item>2016</item>
        <item>2015</item>
    </string-array>
</resources>

[MainActivity.xml]

val test = mutableListOf("월")
val months = DateFormatSymbols().months
test.addAll(months)

 

 

STEP02. 첫번째 항목 선택 처리하기

첫번째 항목을 클릭했을 때 아무런 액션이 일어나지 않게 OnItemSelectedListener룰 수정해 줍니다.

[MainActivity.xml]

binding.spinnerYear.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
    override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
        if (!binding.spinnerYear.getItemAtPosition(position).equals("연도")) {
            binding.txtYear.text = "Selected: ${binding.spinnerYear.getItemAtPosition(position)}"
        }
    }

    override fun onNothingSelected(p0: AdapterView<*>?) {

    }
}

binding.spinnerMonth.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
    override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
        if (!binding.spinnerMonth.getItemAtPosition(position).equals("월")) {
            binding.txtMonth.text = "Selected: ${binding.spinnerMonth.getItemAtPosition(position)}"
        }
    }

    override fun onNothingSelected(p0: AdapterView<*>?) {

    }
}

 

댓글