OnTextChanged vs afterTextChanged в Android - нужны живые примеры
Я читал о TextWatcher в программировании Android. Я не мог понять разницу между afterTextChanged()
и onTextChanged()
.
Хотя я упоминал
Различия между TextWatcher onTextChanged, beforeTextChanged и afterTextChanged, я все еще не могу придумать ситуацию, когда мне нужно будет использовать onTextChanged()
, а не afterTextChanged()
.
Ответы
Ответ 1
Я нашел объяснение этому на Android Dev Portal
http://developer.android.com/reference/android/text/TextWatcher.html
**abstract void afterTextChanged(Editable s)**
This method is called to notify you that, somewhere within s, the text has been changed.
**abstract void beforeTextChanged(CharSequence s, int start, int count, int after)**
This method is called to notify you that, within s, the count characters beginning at start are about to be replaced by new text with length after.
**abstract void onTextChanged(CharSequence s, int start, int before, int count)**
This method is called to notify you that, within s, the count characters beginning at start have just replaced old text that had length before.
Таким образом, различия между этими двумя являются:
- Я могу изменить мой текст, используя
afterTextChanged
, а onTextChanged
не позволяет мне это делать
- onTextChanged дает мне смещение того, что изменилось где, а afterTextChanged не
Ответ 2
Просто добавив что-то в ответ Pratik Dasa и обсуждение с @SimpleGuy в комментариях, так как у меня недостаточно репутации для комментариев.
Три метода также запускаются с помощью EditText.setText("your string here")
. Это будет иметь длину 16 (в данном случае), поэтому count
не всегда 1
.
Обратите внимание, что список параметров не одинаковый для трех методов:
abstract void afterTextChanged(Editable s)
abstract void beforeTextChanged(CharSequence s, int start, int count, int after)
abstract void onTextChanged(CharSequence s, int start, int before, int count)
И здесь разница между afterTextChanged
и onTextChanged
: параметры.
Также обратите внимание на принятый ответ в этой теме: Android TextWatcher.afterTextChanged vs TextWatcher.onTextChanged
Ответ 3
вот объяснение:
onTextChanged: это означает, что когда вы начинаете вводить текст, например, вы хотите написать "спорт", тогда это вызовет каждого персонажа, как он будет вызывать, когда вы нажимаете "s", а затем "p", затем "o" и так далее...
afterTextChanged: это вызовет, когда вы перестанете печатать, он вызывается после того, как вы полностью напишете "спорт", то есть основное отличие.
YOUR_EDIT_TEXT.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
//Your query to fetch Data
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
if (s.length() > 0) {
//Your query to fetch Data
}
}
});