Android Lezione 6 – Le caselle di testo

In questa lezione vedremo come inserire e utilizzare una casella di testo per le nostre applicazioni. Grazie a questo componente potremo prendere del testo in input ed elaborarlo secondo le nostre esisgenze.

Come al solito l’applicazione di esempio si basa su quella delle lezioni precedenti, quindi se volete scaricatela da qua. Proseguiremo il progetto di esempio da dove lo abbiamo lasciato, aggiungendo una casella di testo nella quale inseriremo il nostro nome e modificheremo il comportamento del tasto Greetings, che ora ci saluterà chiamandoci per nome.

Anche in questo caso la dichiarazione dell’oggetto puo essere fatta sia a livello di XML che a livello di Codice runtime.

La classe che andremo ad utilizzare è la EditText. Vediamo subito cosa dobbiamo importare:

import android.widget.EditText


Dichiariamo prima di tutto la casell’interno del layout. Apriamo quindi il file relativo xml  (se seguite l’esempio molto probabilmente sarà main.xml in res/layout) e inseriamo le seguenti righe (prima del tag di chiusura di LinearLayout):

<EditText android:id="@+id/editText1" 
	android:layout_width="match_parent" 
	android:layout_height="wrap_content">
    <requestFocus></requestFocus>
</EditText>

In questo modo abbiamo inserito nella gui dell’applicazione una oggetto EditText con id: editText1. Non appena salvato le informazioni sull’oggetto saranno inserite automaticamente  nella classe R (che ricordo contiene i riferimenti a tutti gli oggetti). A questo punto dichiariamo nella nostra activity una variabile di classe:

EditText localText;

Ora dobbiamo ovviamente iniziare la variabile localText con l’oggetto che abbiamo dichiarato nel file del layout:

localEdit = (EditText) findViewById(R.id.editText1);

In questo modo localEdit ora punta alla casella di testo editText1 e ci permette di accederne al contenuto (o modificarla). Come avevo detto prima l’idea è che ora il tasto “Greetings” ci saluti chiamandoci per nome. Per leggere il testo utilizzeremo il metodo getText() dell’oggetto EditText. Questo metodo torna un Editable, e noi vogliamo salvarlo in una stringa, quindi dobbiamo usare il metodo toString() sull valore di ritorno. Quindi portiamoci subito prima della riga in cui viene effettuato il saluto:

localText.setText("Hello again from Italialinux");

E inseriamo:

String name = localEdit.getText().toString();

Inoltre sostituiamo la riga del saluto, infatti ora deve stampare anche il nostro nome, quindi diventerà:

localText.setText("Hello" + name + "from Italialinux");

Ora proviamo a lanciare l’applicazione e il risultato sarà simile al seguente:

Ora, un piccolo trucchetto se volessimo rendere più leggibile il nostro nome è renderlo per esempio grassetto. E come facciamo? Utilizzando l’html e una piccola variazione nel codice:

localText.setText(Html.fromHtml("Hello&lt;b&gt;" + name + "&lt;/b&gt; from Italialinux"));

Ovviamente per fare questo dobbiamo importare il relativo oggetto:

import android.text.Html;

In questo modo possiamo stampare il testo formattato in HTML. e avremo il nostro nome stampato in grassetto.

Ora se noi volessimo aggiungere la casella di testo senza passare per l’XML dobbiamo prima di tutto assicurarci che il Layout abbia un id (di default non viene definito), apriamo quindi il file del Layout (main.xml se state seguendo l’esmpio) e aggiungiamo un attributo al tag LinearLayout:

    android:id="@+id/mainLayout"

Dopo di che, rimuoviamo la linea che inizializzava la nostra EditText mediante findViewById. Creiamo una nuova istanza dell’oggetto EditText:

localEdit = new EditText(this);

A questo punto dopo la chiamata a setContentView(R.id.layout.main), dichiaramo una variabile che conterrá il nostro Layout e inizializziamola con mediante findViewById, dopodiché le associeremo l’oggetto EditText:

LinearLayout layout = (LinearLayout) findViewById(R.id.mainLayout);
layout.addView(localEdit);

A questo punto possiamo utilizzare la nostra EditText senza problemi. Nel progetto della lezione é implementata la versione via XML, ma commentata trovate anche la versione senza XML.

Penso che per oggi sia tutto. Alla prossima lezione!!!
I sorgenti della lezione corrente li potete trovare qua.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.