Поле с автодополнением

Пишу приложение и необходимо поле ввода, которое способно показывать варианты исходя из уже введенных букв слова. Условно если мне нужен "Рис", то чтобы когда я вводил "Р" у меня появлялись варианты из моей бд начинающиеся на "Р" или если "Ри",то начинающиеся с "Ри" и тд. Я думаю, что вроде как нужно отправлять динамически изменяющийся запрос каждый раз после введенной буквы, но это не очень экономично в плане ресурсов(особенно если бд где-то на сервере), да и думаю, что есть какие-то другие способы. Буду рад любой помощи и подсказке.


Ответы (2 шт):

Автор решения: Сергей Бувака

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

Единственное что вы можете сделать это либо к примеру отправлять запрос только допустим на каждую 2ую введенную букву, либо сделать дебаунсер. Дебаунсер будет отправлять запрос только спустя какое-то время после того как пользователь прекратил что-то вводить. (Например пользователь быстро набирал текст и если он в течении 1 секунды ничего не вводит, только тогда отправляется запрос). А можно и объеденить эти два подхода

Для реализации этого есть много подходов. Один из самых простых это использовать RX Java.

→ Ссылка
Автор решения: Дмитрий Кононенко

Решил вопрос заменой обычного EditText на AutoCompleteTextView. Из коробки с помощью адаптера можно предложить варианты дополнения, заранее полученные из базы данных.

→ Ссылка