[Android] TextWatcher로 EditText 입력 변경 이벤트 탐지하기

야매·2022년 11월 19일
0

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)
    -텍스트가 변경된 이후에 동작하는 메소드다.

0개의 댓글