EditText에 실시간으로 입력된 값에따라 특정 이벤트를 발생시키거나 뷰를 보이게해야 할 때가 있다.

그런경우 TextWatcher라는 Interface를 사용하여 EditText에 실시간으로 입력된 값을 받아 올 수 있다.

 

editText.addTextChangedListener(object : TextWatcher {
            override fun **afterTextChanged**(s: Editable?) {
                // text가 변경된 후 호출
                // s에는 변경 후의 문자열이 담겨 있다.
            }

            override fun **beforeTextChanged**(s: CharSequence?, start: Int, count: Int, after: Int) {
                // text가 변경되기 전 호출
                // s에는 변경 전 문자열이 담겨 있다.
            }

            override fun **onTextChanged**(s: CharSequence?, start: Int, before: Int, count: Int) {
                // text가 바뀔 때마다 호출된다. 
                checkEmail()
            }
        })

 

afterTextChanged(s : Editable?) {}

  • Text가 변경된 후 호출, s→ 변경후의 문자열

beforeTextChanged(s : CharSequence?, start: Int, count: Int, after: Int )

  • Text변경 전 호출 s → 변경전의 문자열
  • start : s에 저장된 문자열에서 새로 추가될 문자열의 시작 위치값(인덱스)
  • count : s에 새로운 문자열이 추가된 후 문자열의 길이
  • after: 새로 추가될 문자열의 길이

onTextChanged(s : CharSequence?, start: Int, before: Int, count: Int)

  • Text실시간 호출 s → 실시간으로 변경되는 문자열
  • start : 새로 추가된 문자열의 시작 위치 값
  • befoer : 삭제된 기존 문자열의 개수
  • count : 새로 추가된 문자열의 개수

+ Recent posts