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