선택 항목 목록으로 스피너를 채우려면 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()를 호출하여 인터페이스 구현을 지정해야 합니다
사용자가 포커스가 바꼈는지 불리언값으로 확인한다
inputEmail.setOnFocusChangeListener { _, hasFocus ->
if (!hasFocus && inputEmail.text.isEmpty()) {
emailSpinner.visibility = View.VISIBLE
} else {
inputEmail.error = null
emailSpinner.visibility = View.INVISIBLE
}
}
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?) {
텍스트 치기전
치는중
친후로 나눠서 처리할 수 있다