본문 바로가기

안드로이드 스튜디오

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

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);
    }
});