android · 2015-06-08 · listview (1) e’ una view che mostra una lista di elementi. le...

12
Android Adapter e ListView [email protected]

Upload: others

Post on 04-Apr-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Android · 2015-06-08 · ListView (1) E’ una View che mostra una lista di elementi. Le caratteristiche grafiche del singolo elemento possono essere configurate mediante un layout

Android

Adapter e ListView

[email protected]

Page 2: Android · 2015-06-08 · ListView (1) E’ una View che mostra una lista di elementi. Le caratteristiche grafiche del singolo elemento possono essere configurate mediante un layout

Funzionamento di un AdapterQuando il contenuto del layout non è predeterminato o è dinamico possono essere utilizzati gli Adapter.Un Adapter recupera i dati da una sorgente (un database, un array o dalle risorse), utilizza una View (predefinita o definita dall’utente) e converte il tutto in View visualizzate da un AdapterView.

Dati

AdapterView

AdapterView

ViewView

View

Page 3: Android · 2015-06-08 · ListView (1) E’ una View che mostra una lista di elementi. Le caratteristiche grafiche del singolo elemento possono essere configurate mediante un layout

AdapterViewSolitamente si utilizza un layout esteso dalla classe AdapterView. Questo tipo di layout utilizza un Adapter per combinare dati con le View relative. Sottoclassi di AdapterView che utlizzano gli Adapter sono ad es.:ListView, GridView, Gallery, Spinner.

GridViewListView Gallery Spinner

Page 4: Android · 2015-06-08 · ListView (1) E’ una View che mostra una lista di elementi. Le caratteristiche grafiche del singolo elemento possono essere configurate mediante un layout

Specializzazioni di AdapterPer recuperare i dati utilizziamo specializzazioni di Adapter, ad esempio:● ArrayAdapter<String>

per una singola riga di informazione di tipo testo● HashMap<String, String> o HashMap<String, ArrayList>

per più righe di informazione di tipo testo● SimpleCursorAdapter

per recuperare dati provenienti da elementi di tipo Cursor (db)

o creiamo direttamente una specializzazione di BaseAdapter per fare esattamente quello che ci serve (utilizzato per le immagini).

Page 5: Android · 2015-06-08 · ListView (1) E’ una View che mostra una lista di elementi. Le caratteristiche grafiche del singolo elemento possono essere configurate mediante un layout

ListView (1)E’ una View che mostra una lista di elementi. Le caratteristiche grafiche del singolo elemento possono essere configurate mediante un layout xml oppure mediante layout predefiniti. Procedura:

1. Creare la ListView nell’xml2. Ottenere il riferimento alla ListView nel codice java3. Creare un insieme di dati da visualizzare (es. array, risorsa, database)4. Utilizzare un adapter che colleghi i dati a una View di riga5. Agganciare l’adapter alla ListView

ListView RisultatoModello RigaDatiString[] nomi = {“Giovanni”,“Martina”,“Giuseppe”,…}

java.lang.Objectandroid.view.View

android.view.ViewGroupandroid.widget.AdapterView<T>

android.widget.AbsListViewandroid.widget.ListView

Page 6: Android · 2015-06-08 · ListView (1) E’ una View che mostra una lista di elementi. Le caratteristiche grafiche del singolo elemento possono essere configurate mediante un layout

ListView (2)Utilizzo:

ListView listView = (ListView) findViewById(R.id.listview);ArrayAdapter<String> adapter = new ArrayAdapter<String>(

Context context, // this o getApplicationContext()int textViewResId, // un item predefinito o uno xmlObjects[] objects); // la sorgente dati

listView.setAdapter(adapter);

Objects è di norma un array di String. In caso contrario viene utilizzato il metodo toString dell’oggetto per ricavarne una stringa.

*Se la ListView è l’unico controllo presente nell’Activity allora è consigliabile utiliz- zare la classe ListActivity (che è una activity con incorporata una ListView)

Page 7: Android · 2015-06-08 · ListView (1) E’ una View che mostra una lista di elementi. Le caratteristiche grafiche del singolo elemento possono essere configurate mediante un layout

ListView (3)Esempio:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,arrayStringhe);

In questo caso utilizziamo un elemento preso dalla libreria di Android: android.R.layout.simple_list_item_1. Potremmo creare semplicemente un layout con una TextView con un formato a piacere e fare riferimento a questa.

Page 8: Android · 2015-06-08 · ListView (1) E’ una View che mostra una lista di elementi. Le caratteristiche grafiche del singolo elemento possono essere configurate mediante un layout

ArrayAdapter (1)Prendiamo in esame i seguenti costruttori di ArrayAdapter.Possiamo utilizzare sia un array che una lista (es. ArrayList):

ArrayAdapter adapter = new ArrayAdapter<T>(Context context, int textViewResourceId, Objects[] objects);

ArrayAdapter adapter = new ArrayAdapter<T>(Context context, int textViewResourceId, List objects);

Page 9: Android · 2015-06-08 · ListView (1) E’ una View che mostra una lista di elementi. Le caratteristiche grafiche del singolo elemento possono essere configurate mediante un layout

ArrayAdapter (2)In questo caso, la nostra View di riga può essere interna ad un layout. Specifichiamo il layout e la View:

ArrayAdapter adapter = new ArrayAdapter<T>(Context context, int layoutResourceId, int textViewResourceId, Objects[] objects | List objects);

Indico che voglio utilizzare la TextView textViewResourceId che si trova nel layout layoutResourceId.

Page 10: Android · 2015-06-08 · ListView (1) E’ una View che mostra una lista di elementi. Le caratteristiche grafiche del singolo elemento possono essere configurate mediante un layout

Gestione della selezione (1)L’evento generato dalla scelta è catturato dal Listener OnItemClickListener. Vediamo come impostarlo e quali metodi implementa:

listView.setOnItemClickListener(new OnItemClickListener() {public void onItemSelected(AdapterView<?> parent,

View view, int position, long id) { // gestione dell'evento }

});

Page 11: Android · 2015-06-08 · ListView (1) E’ una View che mostra una lista di elementi. Le caratteristiche grafiche del singolo elemento possono essere configurate mediante un layout

Gestione della selezione (2)Vediamo in dettaglio il metodo onItemClick:

public void onItemClick(AdapterView<?> parent, View view, int position, long id)

{Toast.makeText(

getApplicationContext(), "Hai selezionato l'elemento " + position, Toast.LENGTH_SHORT).show();

}

Nel caso di elemento selezionato, parent punta alla ListView, view è la View selezionata, position indica l’elemento (partendo da 0) e id indica la riga della risorsa.

Page 12: Android · 2015-06-08 · ListView (1) E’ una View che mostra una lista di elementi. Le caratteristiche grafiche del singolo elemento possono essere configurate mediante un layout

Esercizio ListViewCreare una activity che mostri una listview con i giorni della settimana e mostri con un Toast il giorno selezionato.