-์ฑ๋ฆฐ์ง๋ฐ 1์ฃผ์ฐจ ๊ฐ์
๐ฎ๊ธฐ์ตํด์ผ ํ ์ | ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด์
๊ฐ์ ํํ์ ํจํด์ ํ๋๋ก ํฉ์น๊ณ ์ถ์ ๋๋ ์ฌ๋ฌ ๊ตฐ๋ฐ์์ ์ฌ์ฉํ๋ ์ฝ๋๋ฉด ํจ์๋ก ๋นผ์
TextWatcher ์ธํฐํ์ด์ค์ ๊ฐ์ํ๋ ๋ฒ์
editText.addTextChangedListener {
// afterTextChanged์ ํด๋นํ๋ ๋ก์ง
editText.setErrorMessage()
}
editText.addTextChangedListener(object : TextWatcher {
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {
// ํ
์คํธ๊ฐ ๋ณ๊ฒฝ๋๊ธฐ ์ ์ ํธ์ถ๋ฉ๋๋ค.
// s: ๋ณ๊ฒฝ ์ ์ ํ
์คํธ
// start: ๋ณ๊ฒฝ์ด ์์๋๋ ์์น
// count: ๋ณ๊ฒฝ๋๋ ํ
์คํธ์ ๊ธธ์ด
// after: ๋ณ๊ฒฝ ํ์ ํ
์คํธ ๊ธธ์ด
}
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
// ํ
์คํธ๊ฐ ๋ณ๊ฒฝ๋๋ ๋์์ ํธ์ถ๋ฉ๋๋ค.
// s: ๋ณ๊ฒฝ ํ์ ํ
์คํธ
// start: ๋ณ๊ฒฝ์ด ์์๋๋ ์์น
// before: ๋ณ๊ฒฝ๋๊ธฐ ์ ์ ํ
์คํธ ๊ธธ์ด
// count: ์๋ก ์ถ๊ฐ๋ ํ
์คํธ์ ๊ธธ์ด
}
override fun afterTextChanged(s: Editable) {
// ํ
์คํธ๊ฐ ๋ณ๊ฒฝ๋ ํ์ ํธ์ถ๋ฉ๋๋ค.
// s: ์ต์ข
๋ณ๊ฒฝ๋ ํ
์คํธ
}
})
private fun initView(){
etName.addTextChangedListener {
tvNameError.text = getMessageValidName() //๋ทฐ์ ๊ฐ์์ฑ์ ์กฐ์ ์ํด๋ ๋๊ธฐ ๋๋ฌธ์ ์ด๋ ๊ฒ ์
}
etEmail.addTextChangedListener {
tvEmailError.text = getMessageValidEmail()
}
etName.setOnFocusChangeListener{ v, hasFocous ->
if(hasFocous.not()){
tvNameError.text = getMessageValidName()
}
}
etEmail.setOnFocusChangeListener{ v, hasFocous ->
if(hasFocous.not()){
tvEmailError.text = getMessageValidEmail()
}
}
}
private val editTexts
get() = listOf(
etName,etEmail
)
//editTexts๋ค์ ์ํํ๋ฉด์ addTextChangedListener์ setOnFocusChangeListener๋ฅผ ๋ฑ๋ก
private fun setEditTextListener(){
editTexts.forEach { editText ->
editText.addTextChangedListener{
when(editText){
etName -> {
tvNameError.text = getMessageValidName()
}
etEmail -> {
tvEmailError.text = getMessageValidEmail()
}
}
}
editText.setOnFocusChangeListener{ v, hasFocous ->
if(hasFocous.not()){
when(editText){
etName -> {
tvNameError.text = getMessageValidName()
}
etEmail -> {
tvEmailError.text = getMessageValidEmail()
}
}
}
}
}
}
์๋ฌ์ ๋ํ ๋ฉ์์ง ํธ๋ํน์ ๋๊ฐ์ผ๋ ์๋์ฒ๋ผ ํํํ ์๋ ์๋ค.
private fun setEditTextListener(){
editTexts.forEach { editText ->
editText.addTextChangedListener{
editText.setErrorMessage()
}
editText.setOnFocusChangeListener{ v, hasFocous ->
if(hasFocous.not()){
editText.setErrorMessage()
}
}
}
}
private fun EditText.setErrorMessage(){
when(this){
etName -> {
tvNameError.text = getMessageValidName()
}
etEmail -> {
tvEmailError.text = getMessageValidEmail()
}
}
}
ํ ์คํธ๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ํธ์ถ
editText.addTextChangedListener {
editText.setErrorMessage()
}
ํฌ์ปค์ค ์ํ๊ฐ ๋ณ๊ฒฝ๋ ๋ ํธ์ถ
hasFocus๋ ๋ถ๋ฆฐ ๊ฐ์ผ๋ก, EditText๊ฐ ํฌ์ปค์ค๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉด true, ๊ทธ๋ ์ง ์์ผ๋ฉด false๋ฅผ ๋ฐํ
ํฌ์ปค์ค๋ฅผ ์์์ ๋ editText.setErrorMessage() ๋ฉ์๋๊ฐ ์คํ
editText.setOnFocusChangeListener { v, hasFocus ->
if (hasFocus.not()) {
editText.setErrorMessage()
}
}