Как использовать TextWatcher с запросом в Android? - PullRequest
0 голосов
/ 01 октября 2019

Я сделал EditText, где я набираю внутри него какое-то имя.

Мне хотелось, чтобы приложение выполняло поиск каждый раз, когда что-то менялось в моем EditText .

Я использовал следующий код:

txt_search.addTextChangedListener( new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        query = txt_search.getText().toString();
        fetchBooks(query);
    }

    @Override
    public void afterTextChanged(Editable s) {
        query = txt_search.getText().toString();
        fetchBooks(query);
    }
} );

Где fetchBooks - это метод, который выполняет поиск внутри API на основе запроса.

Проблема, с которой я сталкиваюсь, заключается в том, что иногда поиск выполняетсязастрял. Если, например, я набираю довольно быстро, это дает результаты только для первых нескольких букв, а не для всего запроса в конце.

В конце концов, я пытаюсь получить то, что приложение будет постоянновыполнять поиск по тексту внутри EditText.

Есть ли способ получить его, не запутавшись в результатах?

Спасибо

1 Ответ

3 голосов
/ 02 октября 2019

Первый : Удалить код операции поиска для AfterChangedListener , так как после того, как текст введен в EditText полностью, ваша операция поиска выполняется как для onTextChanged слушателя , так и afterTextChangedСлушатель

Второй Замените txt_search.getText().toString(); на 's.toString()'

Измените ваш TextWatcher, как показано ниже

txt_search.addTextChangedListener( new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            query = s.toString();
            fetchBooks(query);
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    } );

Для получения дополнительной информации, я рекомендую вам посмотреть ниже ссылки:

getText против onTextChanged charSequence

android Edittext с textwatcher

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...