ACTIVITY ANDROID: LE NOSTRE PIZZE

Vediamo come è fatta l’activity “le nostre pizze”  La Immaginiamo come una sorta di tabella dove ogni riga ha una miniatura della pizza, la sua descrizione ed il prezzo. E’ opportuno creare un layout dedicato a descrivere la singola riga. Questo sarà disponibile sempre in res->layout e lo chiamiamo, ad esempio, rigapizza.xml (per crearlo: tasto destro sulla cartella layout, new, /ayout re source file ).

Potremmo decidere di crearlo con l’ausilio dell’ambiente visuale oppure agendo direttamente tramite codice XML. La sua struttura potrebbe essere così fatta:

<Linearlayout …

android :orientation= “horizontal” … >

<ImageView

android: id=”@+id/ logoPizza “/>

<Linearlayout

android : orientation =”vertical”

… >

<TextView

android: id=”@+ id/descrizionePizza “/>

<TextView

android : id =”@+id/prezzoPizza “/>

</Linearlayout>

</Linearlayout>

Si noti l’innesto di layout e widget a mo’ di albero. Abbiamo un linear layout orizzontale che contiene un’immagine ed un linear layout verticale. Quest’ultimo contiene ancora due text view.

esempio-activity-androidEvitiamo di ripetere come associare immagini e testi necessari e passiamo invece ad analizzare il layout principale dell’activity che stiamo progettando. Decidiamo di usare un Linear Layout verticale e come contenitore un controllo ListView: conterrà la lista di tutte le nostre pizze, ognuna delle quali sarà rappresentata da una riga per come descritta in precedenza!

<Linearlayout …

android :orientation=”vertical” … >

<ListView

android: layout_width= “wrap_content”

android: layout_height= “wrap_content”

android: id =”@+id/listView2″

android: layout_centerHorizontal=”true” />

</Linearlayout>

Andando sulla parte di codice Java associato all’activity, questo potrebbe essere così strutturato: definiamo le caratteristiche di una Pizza mediante una classe opportuna:

class Pizza {

int icona ;

String descrizione;

double prezzo;

Pizza(String descrizione, int icona, double prezzo) {

this.descrizione = descrizione;

th is.icona = icona;

this .prezzo = prezzo;

}

public int getrcona() {

return icona;

}

public String getDescrizione() {

return descrizione;

}

public double getPrezzo() {

return prezzo;

}

}

Ci creiamo un CustomAdapter che estende un ArrayAdapter di Pizza: sarà l’entità che si occuperà della presentazione delle singole righe di una vista .

class CustomAdapter extends ArrayAdapter<Pizza> {

public CustomAdapter(Context context, int

textViewResourceld, Pizza [] pizze) {//costruttore

dell’adapter

super(context, textViewResourceld, pizze);

}

Quindi facciamo il bind tra modello e vista: ogni volta che la ListView deve presentare i contenuti di una riga, delega la rappresentazione all’oggetto adapter tramite il metodo getView

public View getView(int position, View convert

View, ViewGroup parent) {

}

Layoutlnflater inflater = (Layoutlnflater)

getContext(). getSystemService( Context. LA YOUT INFLATER_SERVICE) ;

convertView = inflater.inflate(R.layout.

rigapizza, null);

ImageView logo = (ImageView)convertView.

findViewByld( R.id . logo Pizza );

TextView descrizione = (TextView)convertView.

findViewByld ( R. id . descrizionePizza );

TextView prezzo = (TextView)convertView.

findViewByld ( R. id. prezzo Pizza );

Pizza pizza = getltem(position) ;

logo. setlmageResource( pizza .getlcona());

descrizione. setT ext( pizza. getDescrizione());

prezzo .setText(String.format(” Prezzo ( %.2f”,

pizza .getPrezzo()));

retu rn convertView;

Completiamo creando un array con le descrizioni, immagini, prezzi ed associando l’array all’adapter, alle pizze così definite.

protected void onCreate(Bundle savedlnstanceState) {

super. onCreate( saved In sta nceState);

setContentView( R. layout. activity le_pizze) ;

Pizza[] pizze= new Pizza[] {

new Pizza(“4 FORMAGGI: Fonduta,

gorgonzola, edamer, mozzarella,stracchino. “,

R.drawable.formaggi, 5.60),

new Pi zza(”CAPRICCIOSA: Pomodoro,

funghi, carciofi,olive, mozzarelle”, R.drawable.

capricciosa , 4.00),

new Pizza(“MARGHERITA DOC:Pomodoro,

mozzarella di bufala, basilico”, R.drawable.margerita,

5.00),

new Pizza(” NAPOLI: Pomodoro, acciughe,

mozzarella,origano capperi”, R.drawable.napoli, 3.50),

new Pizza(“PRIMAVERA :Pomodoro fresco,

prosciutto,zucchine, olive, stracchino, mozzarella”, R.dra

wable.primavera , 4.50),

}

new Pizza(“ARRABBIATA:Salsa piccante

di pesto e pomodoro,salame piccante, mozzarella”,

R.drawable.arrabbiata, 5.00),

};

ListView listView = (ListView) findViewByld

(R.id.listView2);

listView .setAdapter( new CustomAda pter(th is,

R. layout. riga pizza, pizze)) ;