Реализация Text Watcher для EditText - PullRequest
14 голосов
/ 02 января 2012

У меня есть EditText.Когда я нажимаю на него, он становится фокусируемым.Я буду вводить текст для ввода в EditText.Я хочу реализовать прослушиватель для EditText, чтобы, когда я перестаю печатать, он автоматически сохранял этот текст в базе данных вместо кнопки.Как заставить слушателя EditText слушать, что набор текста остановлен или нет?

Ответы [ 3 ]

52 голосов
/ 02 января 2012

Попробуй вот так.

EditText et = (EditText)findViewById(R.id.editText);
Log.e("TextWatcherTest", "Set text xyz");
et.setText("xyz");

et.addTextChangedListener(new TextWatcher() {
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) { }
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
    @Override
    public void afterTextChanged(Editable s) {
        Log.e("TextWatcherTest", "afterTextChanged:\t" +s.toString());
    }
});
16 голосов
/ 16 мая 2012

set edittext imeOption

editText.setImeOptions(EditorInfo.IME_ACTION_DONE);

Используя что-то вроде этого,

editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_DONE) {
            // Specify your database function here.
            return true;
        }
        return false;
    }
});

В качестве альтернативы, вы можете использовать интерфейс OnEditorActionListener, чтобы избежать анонимного внутреннего класса.

4 голосов
/ 24 сентября 2016

Добавить это к вашему тексту редактирования

et1.addTextChangedListener(new TextWatcher() {
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

            // TODO Auto-generated method stub
        }

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

            // TODO Auto-generated method stub
        }

        @Override
        public void afterTextChanged(Editable s) {

            // TODO Auto-generated method stub
        }
    });
...