TextView, AutoCompleteTextView, MultiAutoCompleteTextView e CheckedTextView

textview

L’oggetto TextView è il classico componente etichetta di testo che serve per visualizzare semplicemente del testo.

Il controllo AutoCompleteTextView è una casella di testo con delle possibili parole di default che possono essere inserite.
Quando iniziamo a scrivere il controllo mostrerà le possibili parole che possono essere scelte da una lista.

Attenzione, con possibili parole non significa che possiamo inserire solo quelle, ma tutte.
La particolarità di questo componente è che l’intellinsense, ovvero la lista di possibili parole che ci viene proposta, funziona una sola volta, cioè verrà visualizzata solo per una parola.

La MultiAutoCompleteTextView è praticamente una AutoCompleteTextView con l’aggiunta che l’intellinsense opera su più parole, opportunamente separate da un carattere speciale.
Quindi la lista delle parole verrà visualizzata più volte e non solo una volta come nell’AutoCompleteTextView.

L’esempio di codice mostra con semplicità come utilizzare questi tre controlli

E’ facile notare che, caso di TextView e CheckedTextView, per modificare il testo di base basta editare la proprietà text.
Le proprietà in comune, come layout_width e layout_height servono per impostare la grandezza del componente:
fill_parent sta per riempi il contenitore e wrap_content è la grandezza di default del componente.
Sia per AutoCompleteTextView sia per MultiAutoCompleteTextView bisogna caricare le parole via codice, ed utilizzeremo un ArrayAdapter per fare ciò.

Il codice è abbastanza semplice: vengono ricavati i due componenti tramite l’id definito nel layout e viene utilizzato lo stesso ArrayAdapter per caricare le parole.
Un ArrayAdapter è una specie di vettore, nel caso nostro tipizzato a String (quindi un vettore di stringhe), dove le stringhe passate come parametri vengono adattate ad elementi del componente identificato, in questo caso simple_dropdown_item_1line, cioè semplice lista ad una colonna.
Nel caso della MultiAutoCompleteTextView da notare è il metodo setTokenizer, dove viene specificato che il carattere speciale che deve fare da separatore è una virgola.
Il risultato finale è questo

textview