Я кое-что знаю, TextWatcher
но это срабатывает при каждом вводе персонажа. Мне нужен слушатель, который запускается всякий раз, когда пользователь заканчивает редактирование. Является ли это возможным? Также TextWatcher
я получаю экземпляр, Editable
но мне нужен экземпляр EditText
. Как мне это получить?
РЕДАКТИРОВАТЬ : второй вопрос важнее. Пожалуйста, ответьте на это.
Ответы:
Во-первых, вы можете увидеть, закончил ли пользователь редактирование текста, если он
EditText
теряет фокус, или если пользователь нажимает кнопку «Готово» (это зависит от вашей реализации и от того, что вам больше подходит). Во-вторых, вы не можете получитьEditText
экземпляр внутриTextWatcher
только в том случае, если вы объявили вEditText
качестве объекта экземпляра. Даже если вы не должны редактироватьEditText
внутри,TextWatcher
потому что это небезопасно.РЕДАКТИРОВАТЬ:
Чтобы включить
EditText
экземпляр в своюTextWatcher
реализацию, вы должны попробовать что-то вроде этого:Обратите внимание, что в приведенном выше примере могут быть некоторые ошибки, но я просто хотел показать вам пример.
источник
Меня беспокоило то, что реализация слушателя для всех моих полей EditText требовала от меня уродливого подробного кода, поэтому я написал приведенный ниже класс. Может быть полезно всем, кто наткнется на это.
Теперь реализация слушателя немного чище.
Что касается того, как часто он срабатывает, можно было бы реализовать проверку для запуска желаемого кода
//Do stuff
после заданногоисточник
Любой, кто использует ButterKnife . Вы можете использовать как:
источник
Я сделал это с помощью
AutotextView
:источник
источник
TextWatcher
не сработало для меня, потому что продолжало увлекаться каждымEditText
и портить ценности друг друга.Вот мое решение:
Следовательно, с помощью
getChildAt(xx)
метода вы можете получить любой элемент вListView
и получить отдельный элемент, используяfindViewById
. И тогда будет указано самое последнее значение.источник
Насколько я могу себе представить, есть только два способа сделать это. Как узнать, что пользователь закончил писать слово? Либо при потере фокуса, либо при нажатии на кнопку «ок». Я не думаю, что вы можете знать, что пользователь нажал последний символ ...
Так что вызовите
onFocusChange(View v, boolean hasFocus)
или добавьте к нему кнопку и прослушиватель кликов.источник
Метод Watcher срабатывает при вводе каждого символа. Итак, я построил этот код на основе метода onFocusChange:
Чтобы использовать его, просто позвоните так:
Вы можете игнорировать функцию comS, заменив! ComS (dat.s, "" + EdTe.getText ()) функцией! Equal. Однако сама функция equal некоторое время работает некорректно во время выполнения.
Слушатель onChange запомнит старые данные EditText при вводе фокуса пользователя, а затем сравнит новые данные, когда пользователь потеряет фокус или перейдет к другому вводу. Если сравнивать старую строку с той же новой строкой, она запускает работу.
Если у вас есть только 1 EditText, тогда вам нужно будет создать функцию ClearFocus, сделав Ultimate Secret Transparent Micro EditText 😸 вне окон 😽 и запросить фокус на нем, а затем скрыть клавиатуру с помощью диспетчера методов импорта.
источник