TextWatcher를 선언하면 아래 메서드들을 @Override 할수 있다.
@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
s : 현재 입력이 수행되고 있는 문자열.
start : 변경이 문자열의 어느 위치에서 수행되었는지 문자열 인덱스로 알려줌.
before : 변경이 수행되기 전 해당 위치의 문자열 길이를 나타냄.
count : 변경이 수행된 문자열의 개수
이 메소드는 s가 변경될 때 호출된다,
|
ㅊ |
처 |
청 |
청ㄷ |
청다 |
청담 |
청담ㄷ |
청담도 |
청담동 |
start |
0 |
0 |
0 |
0 1 |
1 |
1 |
1 2 |
2 |
2 |
before |
0 |
1 |
1 |
1 0 |
1 |
1 |
1 0 |
1 |
1 |
count |
1 |
1 |
1 |
1 1 |
1 |
1 |
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는 텍스트 변화가 있기전의 값이다.
'Android' 카테고리의 다른 글
[Slide]슬라이드 뷰 플리퍼(ViewFlipper) (0) | 2013.07.18 |
---|---|
EditText 한글입력 안되는 증상 (0) | 2013.07.18 |
이클립스 안드로이드 환경 구축 [SDK Manager 실행 문제] 무반응 (1) | 2013.05.07 |
안드로이드 리스트뷰 추가 삭제 (0) | 2012.08.01 |
안드로이드 리스트 뷰 (0) | 2012.08.01 |