안드로이드 앱 개발을 하다 보면 EditText에서 텍스트가 변경할 때마다 감지해서 특정 로직을 실행하고 싶을 때가 자주 생기는 이번 글에서는 이러한 로직을 구현하는 법을 설명하려고 한다
구현 방법
안드로이드에서 EditText에서 텍스트가 변경할 때마다 감지하는 방법은 매우 간단한데 이번 글에선 2개를 소개해보겠다
afterTextChanged 람다식 사용
우선 가장 간단하게 텍스트가 바뀐 후 이를 감지해서 특정 로직을 실행하고 싶다면 afterTextChanged에 람다식을 사용하면 된다
1
2
3
editText.addTextChangedListener { text ->
TODO("Not yet implemented")
}
이렇게 하면 간단하게 텍스트 변화를 감지할 수 있다
TextWatcher 메서드 사용
만약 단순히 텍스트가 바뀐 후가 아닌 더 다양하게 바뀌기 전 바뀐 후도 감지하고 싶다면 TextWatcher 메서드를 사용하면 되는데
1
2
3
4
5
6
7
8
9
10
11
12
13
editText.addTextChangedListener(object : TextWatcher {
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
TODO("Not yet implemented")
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
TODO("Not yet implemented")
}
override fun afterTextChanged(s: Editable?) {
TODO("Not yet implemented")
}
})
여기서 beforeTextChanged는 텍스트가 바뀌기 전, onTextChanged는 변경되는 도중, afterTextChanged는 위에서 했던 것과 마찬가지로 바뀐 이후를 감지한다