Ini adalah jawaban yang sedikit lebih umum dengan lebih banyak penjelasan untuk pemirsa di masa depan.
Tambahkan pendengar yang diubah teks
Jika Anda ingin menemukan panjang teks atau melakukan hal lain setelah teks diubah, Anda dapat menambahkan pendengar yang diubah teks ke teks edit Anda.
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) {
}
});
Pendengar membutuhkan TextWatcher
, yang membutuhkan tiga metode untuk menjadi ditimpa: beforeTextChanged
, onTextChanged
, danafterTextChanged
.
Menghitung karakter
Anda bisa mendapatkan jumlah karakter dalam onTextChanged
atau beforeTextChanged
dengan
charSequence.length()
atau afterTextChanged
dengan
editable.length()
Arti metode
Parameternya sedikit membingungkan jadi inilah penjelasan tambahannya.
beforeTextChanged
beforeTextChanged(CharSequence charSequence, int start, int count, int after)
charSequence
: Ini adalah konten teks sebelum perubahan yang tertunda dibuat. Anda seharusnya tidak mencoba mengubahnya.
start
: Ini adalah indeks di mana teks baru akan dimasukkan. Jika rentang dipilih, maka itu adalah indeks awal rentang.
count
: Ini adalah panjang teks yang dipilih yang akan diganti. Jika tidak ada yang dipilih maka count
akan menjadi 0
.
after
: ini adalah panjang teks yang akan disisipkan.
onTextChanged
onTextChanged(CharSequence charSequence, int start, int before, int count)
charSequence
: Ini adalah konten teks setelah perubahan dibuat. Anda sebaiknya tidak mencoba mengubah nilai ini di sini. Ubah editable
in afterTextChanged
jika Anda perlu.
start
: Ini adalah indeks awal di mana teks baru dimasukkan.
before
: Ini adalah nilai lama. Panjang teks yang dipilih sebelumnya yang diganti. Ini adalah nilai yang sama dengan count
di beforeTextChanged
.
count
: Ini adalah panjang teks yang disisipkan. Ini adalah nilai yang sama dengan after
di beforeTextChanged
.
afterTextChanged
afterTextChanged(Editable editable)
Seperti onTextChanged
, ini dipanggil setelah perubahan telah dibuat. Namun, sekarang teks dapat dimodifikasi.
editable
: Ini adalah teks yang dapat diedit dari EditText
. Namun, jika Anda mengubahnya, Anda harus berhati-hati untuk tidak masuk ke loop tanpa batas. Lihat dokumentasi untuk lebih jelasnya.