본문 바로가기

안드로이드/자바

[안드로이드/Android] EditText addTextChangeListener

반응형

EditText는 사용자의 입력을 받는 위젯입니다. addTextChangeListener를 사용하면 입력 상황에따라 다르게 이벤트를 처리해줄 수 있습니다.

edittext.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
//텍스트 변화가 시작될때

}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
//텍스트에 변화가 있을때

}

@Override
public void afterTextChanged(Editable s) {
//텍스트 변화가 끝났을떄

}
});


리스너의 메소드 실행 순서는 beforTextChanged -> onTextChanged -> afterTextChanged 입니다.


또 리스너를 통해 텍스트를 추가했는지, 삭제했는지 알 수 있습니다.

텍스트 추가할때

start = 1, count = 0 

텍스트 삭제할때

start = 0, count = 1


저는 해당 리스너를 사용하여 숫자를 입력받고, 핸드폰 번호 처럼 하이픈(-)을 넣고 빼주는 기능을 구현했습니다. 

그러던중 여러 예외상황을 처리하다보니 복잡해졌었는데 안드로이드에서 제공해주는 TextWatch가 있더라구요.

다른분들도 고생하지 마시고 아래와 같이 제공해주는걸 사용하시면 간단합니다.

edittext.addTextChangedListener(new PhoneNumberFormattingTextWatcher());

위의 리스너가 정상 작동하기 위해선 editText의 inputType을 'phone'으로 설정해야합니다.


그리고 해당 기능을 기본으로 사용하고 덧붙이고 싶은 기능이 있으실땐 'PhoneNumberFormattingTextWatcher'를 상속받는 클래스를 만드셔서 사용하시면 됩니다.




해당 포스팅은 지극히 주관적인 내용으로 저자의 복기 목적으로 작성된 것이고, 내용에대해 수정이나 추가 요청은 언제든 환영합니다. 






반응형