editText에 입력한 값을 실시간으로 관찰하면서 입력값에 따른 처리를 해야 할 때가 있다. 이때 가볍게 써먹을 수 있는 편리한 TextWatcher
란 인터페이스가 있다. TextWatcher
는 단어 그대로 입력되는 Text를 감지하고 있다가 실시간으로 동작하는 유용한 클래스이다. 인터페이스이기 때문에 구현하면 TextWatcher
가 갖고 있는 모든 메서드를 재정의해야 하는데, TextWatcher
에는 아래 3가지 메서드가 있다.
아래는 가장 기본으로 필수적으로 쓰이는 메소드들이다.
private val textWatcher = object : TextWatcher {
override fun afterTextChanged(s: Editable?) {
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
}
}
beforeTextChanged(CharSequence charSequence, int i, int i1, int i2)
-텍스트가 변경되기 바로 이전에 동작하는 메소드이다.
-첫 글자 입력 시에는 반응하지 않다가 두 번째 글자가 입력되자 처음에 입력했던 글자가 텍스트뷰에 보여진다.
-그리고 입력했던 문자열들을 하나씩 지울 때마다 지우기 전의 글자가 보인다.
onTextChanged(CharSequence charSequence, int i, int i1, int i2)
-텍스트가 변경되는 동시에 동작하는 메소드다.
-onTextChanged()
는 글자가 입력될 때마다 호출되서 count가 바뀐다.
-실시간으로 텍스트가 입력되거나 삭제될 때 로직을 추가하려면 해당 메소드에서 할 수도 있다.
afterTextChanged(Editable editable)
-텍스트가 변경된 이후에 동작하는 메소드다.