AutoCompleteTextView разрешить только предлагаемые параметры

у меня есть DialogFragment, содержащую AutoCompleteTextView и Cancel и OK кнопки.

на AutoCompleteTextView дает предложения имен пользователей, которые я получаю от сервера.

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

Я знаю, что могу проверить, существует ли это имя пользователя, когда пользователь нажимает OK, но есть ли другой способ, скажем, не позволять пользователю вводить символ, если такого имени пользователя не существует. Я не знаю, как это сделать, потому что на каждом введенном символе я получаю только до 5 предложений. Сервер реализован таким образом.

любые предложения приветствуются. Спасибо

1 ответов


Я не мог найти более подходящего решения, чем это:

я добавил этот слушатель изменения фокуса

actName.setOnFocusChangeListener(new OnFocusChangeListener() {
        public void onFocusChange(View v, boolean hasFocus) {
            if (!hasFocus) {
                ArrayList<String> results =
                        ((UsersAutoCompleteAdapter) actName.getAdapter()).getAllItems();
                if (results.size() == 0 ||
                        results.indexOf(actName.getText().toString()) == -1) {
                    actName.setError("Invalid username.");
                };
            }
        }
});

метод getAllItems() возвращает ArrayList содержатся предложения.

поэтому, когда я ввожу какое-то имя пользователя, а затем перемещаюсь в другое поле, этот прослушиватель запускается, и он проверяет, не пуст ли список предложений, и если Введенное имя пользователя находится в этом списке. Если условие не выполнено, отображается ошибка.

также у меня та же проверка на