Questa è una risposta leggermente più generale con maggiori spiegazioni per i futuri spettatori.
Aggiungi un ascoltatore modificato di testo
Se vuoi trovare la lunghezza del testo o fare qualcos'altro dopo che il testo è stato modificato, puoi aggiungere un listener modificato dal testo al tuo testo di modifica.
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) {
}
});
L'ascoltatore ha bisogno di una TextWatcher
, che richiede tre metodi per essere sovrascritto: beforeTextChanged
, onTextChanged
e afterTextChanged
.
Contando i personaggi
Puoi ottenere il conteggio dei personaggi dentro onTextChanged
o beforeTextChanged
con
charSequence.length()
o in afterTextChanged
con
editable.length()
Significato dei metodi
I parametri sono un po 'confusi, quindi ecco una piccola spiegazione in più.
beforeTextChanged
beforeTextChanged(CharSequence charSequence, int start, int count, int after)
charSequence
: Questo è il contenuto del testo prima che venga apportata la modifica in sospeso. Non dovresti provare a cambiarlo.
start
: Questo è l'indice di dove verrà inserito il nuovo testo. Se viene selezionato un intervallo, allora è l'indice iniziale dell'intervallo.
count
: Questa è la lunghezza del testo selezionato che verrà sostituito. Se non viene selezionato nulla, count
lo sarà 0
.
after
: questa è la lunghezza del testo da inserire.
OnTextChanged
onTextChanged(CharSequence charSequence, int start, int before, int count)
charSequence
: Questo è il contenuto del testo dopo la modifica. Non dovresti provare a modificare questo valore qui. Modificare editable
in afterTextChanged
se necessario.
start
: Questo è l'indice dell'inizio di dove è stato inserito il nuovo testo.
before
: Questo è il vecchio valore. È la lunghezza del testo precedentemente selezionato che è stato sostituito. Questo è lo stesso valore di count
in beforeTextChanged
.
count
: Questa è la lunghezza del testo che è stato inserito. Questo è lo stesso valore di after
in beforeTextChanged
.
afterTextChanged
afterTextChanged(Editable editable)
Ad esempio onTextChanged
, questo viene chiamato dopo che la modifica è già stata apportata. Tuttavia, ora il testo può essere modificato.
editable
: Questo è il testo modificabile di EditText
. Se lo cambi, però, devi stare attento a non entrare in un ciclo infinito. Vedi la documentazione per maggiori dettagli.