728x90

TextWatcher를 선언하면 아래 메서드들을 @Override 할수 있다.

 

@Override

public void onTextChanged(CharSequence s, int start, int before, int count)

 

s : 현재 입력이 수행되고 있는 문자열.

start : 변경이 문자열의 어느 위치에서 수행되었는지 문자열 인덱스로 알려줌.

before : 변경이 수행되기 전 해당 위치의 문자열 길이를 나타냄.

count : 변경이 수행된 문자열의 개수

 

이 메소드는 s가 변경될 때 호출된다,

 

 

 

 ㅊ

처 

청 

청ㄷ 

청다 

청담 

청담ㄷ 

청담도 

청담동 

 start

0  1 

1

1  2

 before

1  0 

1  0 

 count

1  1 

1  1 

 

최종적으로 문자열은 s[0]=청, s[1]=담, s[2]=동 이렇게 저장된다.

변수값의 변화에서 "청ㄷ", 또는 "청담ㄷ" 와 같이 새로 글자가 시작될때는 onTextChanged가 두 번 각기 다른 매개변수값들로 호출된다.

(현재 완성된 글자의 위치에서 일단 시작, "처"와 같은 글자는 한번에서 글자에 따라서는 두번의 입력을 현재 위치에서 받아서 "청" 이 될 수 있다. 하지만 "청"은 다음 입력을 받을 수 없다. 그래서 그 다음 입력은 s의 다음 칸에 할당이 되어야 한다. 이런 과정으로 인해 onTextChanged도 역시 두 번 호출되게 된다.)

 

@Override
public void beforeTextChanged(CharSequence s, int start, int before, int count)

 

앞서 onTextChanged와 개념은 똑같은듯 하다.

s는 텍스트 변화가 있기전의 값이라 생각하면 되겠다.

 

@Override
public void afterTextChanged(Editable s)

 

s는 텍스트 변화가 있기전의 값이다.

 

728x90
Posted by 정망스
,


맨 위로
홈으로 ▲위로 ▼아래로 ♥댓글쓰기 새로고침