Как понять, остановить и начать печатать, как WhatsApp для EditText? - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть edittext, и я хочу понять, остановить и начать печатать.Я прослушал textwatcher onTextChanged и использую таймер для набора текста.

Но когда текст edittext не пустой, я не правильно понимаю фактическую операцию набора.

Я хочу видеть:

Мой текст edittext:

- ad-- -> набор текста ...

- ads-- -> набор текста ...

- ads-- -> после 900мс перестать печатать.::: но не понимаю

TextWatcher textWatcher = new TextWatcher() {

        public void afterTextChanged(Editable s) {
        }

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

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

            if (count != 0 && count >= before) {
                typingTimer.startTyping();
                return;
            }

            typingTimer.stopTyping();

        }
    }; 

1 Ответ

0 голосов
/ 26 сентября 2018

На самом деле вам нужен таймер.

TextWatcher textWatcher = new TextWatcher() {

    private Timer timer = new Timer();
    private final long TYPING_DELAY = 900; // milliseconds

    public void afterTextChanged(Editable s) {
    }

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

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

        // do what you want
        // show "is typing"

        timer.cancel();
        timer = new Timer();
        timer.schedule(
            new TimerTask() {
                @Override
                public void run() {
                    // here, you're not typing anymore
                }
            }, 
            TYPING_DELAY
        );

    }
}; 
...