Una cosa molto importante, da cui praticamente derivano tutti i componenti dell’interfaccia di Android, sono le View, esse gestiscono per intero la GUI, associate ad un Listener, permettono di gestire anche le azioni da intraprendere quando si verifica un’evento.
Cosa sono le View?
Una View è qualsiasi cosa noi vediamo sulla nostra Activity, qualsiasi cosa noi possiamo costruire e far interagire, vi è una gerarchia di View, che partono dalla superclasse “View” e si estende tra Button,TextView,ListView e quant’altro, il tutto appunto derivando dalla superclasse View, secondo le regole di derivazione del Java, ma anche in generale costituiscono una classe dello stesso tipo.
Ma come funzionano le View?
Innanzitutto Android, per mettere in “contatto” la parte grafica dalla parte logica, costruisce in automatico, e a tempo di compilazione il fiel R.java, questo file funge da vero e proprio database, possiamo aprirlo, leggerlo, ma non dobbiamo modificarlo in alcun modo! Anche la modifica più piccola da parte nostra può creare danni irreversibili al codice. In questo file troviamo indirizzi di memoria “dinamici” ossia che il sistema operativo può scalare a suo piacimento, ma che comunque forniscono una base per l’implementazione dell’interfaccia in XML, e il codice Java della app, o comunque di qualsiasi altro linguaggio, deve poter interagire.
Per usare ad esempio una TextView:
TextView a=(TextView)findViewById(R.id.textView1);
il metodo findVireById non fa altro che andare nell’R.java trovare l’id di textView1, leggerlo e associarlo ad “a”, creando implicitamente l’oggetto, e castandolo a TextView, stessa procedura per qualsiasi altra View noi vogliamo.
Ma come far fare per le azioni e i button?
Per questo esistono i listener, ossia classi e interfacce, che vengono chiamate al verificarsi di eventi, come appunto la pressione di un bottone, e all’interno di queste classi possiamo inserire appunto il nostro codice esattamente così:
Button a=(Button) findViewById(R.id.button1);
a.setOnClickListener(new Listener());
in cui Listener:
class Listener implements OnClickListener{
public void onClick(View v){
//nostro codice da eseguire
}
}
e nel bottone succederà che quando riceverà il click, oltre alla classica animazione di bottone che viene premuto, verrà chiamato il metodo onClick, eseguendo appunto il nostro codice per l’azione, questo codice può essere realizzato come meglio crediamo, senza limitazione alcuna.