11

Ho un AutoCompleteTextView Io uso per selezionare un elemento da una lunga lista. L'utente dovrebbe essere in grado di selezionare un elemento predeterminato dall'elenco. Non dovrebbero essere in grado di inserire il proprio oggetto.AutoCompleteTextView rileva quando la voce selezionata dall'elenco viene modificata dall'utente

Il modo in cui controllo per verificare che invii solo un elemento dall'elenco è utilizzare setOnItemClickListener per attivare un flag booleano. Il problema è che dopo che il flag booleano è impostato su true, possono ancora modificare il testo selezionato dell'elemento. Devo rilevare questo e impostare nuovamente il flag booleano su false. Come faccio a fare questo. Ho visto un suggerimento per utilizzare onKeyDown, ma non sono sicuro di come implementarlo.

risposta

42

È possibile aggiungere testo modificato ascoltatore:

autoCompleteTextView.addTextChangedListener(new TextWatcher() { 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 

    } 

    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {     

    } 

    @Override 
    public void afterTextChanged(Editable s) { 

    } 
}); 
+0

Come si distingue la selezione del menu a discesa sostituendo l'intera stringa dall'utente con questa soluzione? – foo

1

Implementare uno TextWatcher, che fornirà 3 metodi che riceveranno continuamente richiami quando qualcuno cambia il testo. Se la stringa aumenta, l'utente sta digitando di nuovo da solo.

-1

Usa

AutoCompleteTextView#setOnItemSelectedListener() 

- funziona come un fascino.

+0

Sebbene questo snippet di codice possa risolvere la domanda, [compresa una spiegazione] (http://meta.stackexchange.com/questions/114762/explaining-entally-code-based-answers) aiuta davvero a migliorare la qualità del tuo post. Ricorda che stai rispondendo alla domanda per i lettori in futuro, e queste persone potrebbero non conoscere le ragioni del tuo suggerimento sul codice. –

Problemi correlati