안드로이드 스튜디오

[ 안드로이드 ] EditText 입력 변화 처리, TextWatcher 사용법

zzuvely 2022. 7. 18. 12:18

TextWatcher 란?

EditText에 텍스트를 입력했을 때, 입력 변화 이벤트 처리를 해주는 클래스이다.

 

beforeTextChanged() 입력하여 변화가 생기기 전에 처리
onTextChanged() 변화와 동시에 처리
afterTextChanged() 입력이 끝났을 때 처리

사용법

editText.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

    }

    @Override
    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

    }

    @Override
    public void afterTextChanged(Editable editable) {

    }
});

사용 예제

editSearch.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

    }

    @Override
    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

    }

    @Override
    public void afterTextChanged(Editable editable) {

        // 키워드 검색 EditText 에 글자를 쓸때마다,
        // 자동으로 해당  검색어를 가져와서 디비에서 쿼리해서
        // 검색 결과를 화면에 표시해주는 기능 개발
        // 1. EditText 에서 검색어 가져온다.
        String keyword = editSearch.getText().toString().trim();

        // 검색 키워드가 2글자 미만일 때 return, 검색 불가능
       if (keyword.length() < 2) {
           return;
        }

        // 2. 검색어로 DB 에 쿼리한다.
        DatabaseHandler db = new DatabaseHandler(MainActivity.this);
        memoList = db.searchMemo(keyword);

        // 3. 검색어로 매칭한 메모 결과들을 화면에 표시한다.
        adapter = new MemoAdapter(MainActivity.this, memoList);

        recyclerView.setAdapter(adapter);
    }
});