Bu, gelecekteki izleyiciler için daha fazla açıklama ile biraz daha genel bir cevaptır.
Metin değiştirilmiş dinleyici ekle
Metin uzunluğunu bulmak veya metin değiştirildikten sonra başka bir şey yapmak istiyorsanız, düzenleme metninize metin değiştirilmiş dinleyici ekleyebilirsiniz.
EditText editText = (EditText) findViewById(R.id.testEditText);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence charSequence, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable editable) {
}
});
Dinleyici ihtiyacı TextWatcher
: geçersiz kılınan olmak üç yöntem gerektirir, beforeTextChanged
, onTextChanged
, ve afterTextChanged
.
Karakterleri sayma
Karakter sayısını içeri onTextChanged
veya beforeTextChanged
içine alabilirsiniz
charSequence.length()
veya afterTextChanged
ile
editable.length()
Yöntemlerin anlamı
Parametreler biraz kafa karıştırıcı, bu yüzden burada biraz ekstra açıklama var.
beforeTextChanged
beforeTextChanged(CharSequence charSequence, int start, int count, int after)
charSequence
: Bu, bekleyen değişiklik yapılmadan önceki metin içeriğidir. Değiştirmeye çalışmamalısınız.
start
: Bu, yeni metnin ekleneceği dizindir. Bir aralık seçilirse, aralığın başlangıç dizinidir.
count
: Bu, değiştirilecek seçilen metnin uzunluğudur. Hiçbir şey seçilirse o zaman count
olacak 0
.
after
: bu, eklenecek metnin uzunluğudur.
OnTextChanged
onTextChanged(CharSequence charSequence, int start, int before, int count)
charSequence
: Bu, değişiklik yapıldıktan sonraki metin içeriğidir. Bu değeri burada değiştirmeye çalışmamalısınız. Değiştir editable
içinde afterTextChanged
Gerekirse.
start
: Bu, yeni metnin eklendiği başlangıcın dizinidir.
before
: Bu eski değer. Değiştirilen, önceden seçilen metnin uzunluğudur. Bu aynı değerdir count
içinde beforeTextChanged
.
count
: Bu, eklenen metnin uzunluğudur. Bu aynı değerdir after
içinde beforeTextChanged
.
afterTextChanged
afterTextChanged(Editable editable)
Gibi onTextChanged
değişiklik zaten yapıldıktan sonra, bu denir. Ancak, şimdi metin değiştirilebilir.
editable
: Bu, düzenlenebilir metnidir EditText
. Eğer değiştirirseniz, sonsuz bir döngüye girmemeye dikkat etmelisiniz. Daha fazla ayrıntı için belgelere bakın.