Android. Intent, ListView e Adapter. Corso di programmazione di sistemi mobile 1

Documenti analoghi
Corso di programmazione di sistemi mobile 1. Android Laboratorio. Activity, ListView e Adapter

Sistemi Mobili e Wireless Android - Intent

Programmazione. Android

Android. Intent e intent-filter. diegozabot@yahoo.it

Android lezione 9 Le listview

@ ITT M. BUONARROTI, TRENTO ANDROID DEVELOPMENT ELEMENTI BASE. RAMAN KAZHAMIAKIN OSCAR GIOVANNI DE

Mobile Programming. Prova scritta del 07/04/2016. Prof. De Prisco. Corso di laurea in Informatica

Mobile Programming. Prova scritta del 05/02/2016. Prof. De Prisco. Corso di laurea in Informatica

Sistemi Mobili e Wireless Android Selection widget e adapter

Lezione 9 Liste, tabelle, caselle di scelta e gallerie di immagini

Android. Adapter e ListView. diegozabot@yahoo.it

Sistemi Mobili e Wireless Android - Risorse

Android. Anatomia di una applicazione

@ ITT M. BUONARROTI, TRENTO ANDROID DEVELOPMENT UI PERSONALIZZATE E MENU. RAMAN KAZHAMIAKIN OSCAR GIOVANNI DE

Documento di Analisi. Mockup

Ciclo di vita delle aevità Android Mobile Programming Prof. R. De Prisco

Introduzione alla programmazione Android. Emanuel Di Nardo

Manuale registro elettronico per docenti

14Ex-Cap11.qxd :20 Pagina Le macro

Raccolta e memorizzazione dei dati immessi nei moduli dai visitatori

Inoltrare un messaggio.

Programmazione ad oggetti

Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007

Manuale d uso della Posta TBS. Oracle Collaboration Suite

Perché il linguaggio C?

Manuale di configurazione e utilizzo Barcode card

Modulo o Form in Html

Tesina esame Programmazione di Sistemi Mobile realizzata da Roberto Giuliani matricola Sicurezza e Permission in Android

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

GESTIONE DEGLI ERRORI

Sviluppare Applicazioni per Android

Il Portale Documentale. Note Operative. Distribuzione Documenti on Line

Gestione posta del Distretto 2060

Funzioni, Stack e Visibilità delle Variabili in C

TALKING PAPER MANUALE D USO

Passare argomenti al programma

Android. Project, Activity, Layout e Toast

Il Manuale di KXSLDbg. Keith Isdale Traduzione del documento: Samuele Kaplun Traduzione del documento: Simone Solinas

Fiat Group Purchasing Supplier Quality SQP Manuale Utente Versione 1, Novembre 2008

Mobile Programming. Prova scritta del 22/01/2016. Prof. De Prisco. Corso di laurea in Informatica

Il sistema operativo Android

La Back Office Console consente di costruire lo scheletro degli schema.

Sezione Gestione Sconti. Concessionari DCI e Gruppo VW

Sistemi Mobili e Wireless Android Action bar e menu

MANUALE MODULO WIDGET EVENT TRACKING LICENZA SaaS

Android. Android01: Introduzione alle Activity.

Folium. Quick guide: gestione documentale e fascicolazione elettronica. Dicembre FOLIUM: Gestione documentale e fascicolazione elettronica

Modifica Pagina Web. Pulsante LogOut: cliccare per uscire dall'ambiente di amministrazione

Mobile Programming. Prova scritta del 10/02/2017. Prof. De Prisco. Corso di laurea in Informatica

Configurazione di una LAN in ambiente Windows

Realizzazione di una semplice applicazione HelloWorld con una introduzione delle API di base del SDK Android.

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05

Sistemi Mobili e Wireless Android Interfacce utente: Widget e Layout (2)

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati

Windows. La prima realizzazione di un ambiente grafico si deve alla Apple (1984) per il suo Macintosh. La gestione dei file conserva la logica del DOS

Programmazione Orientata agli Oggetti in Linguaggio Java

Istruzioni per la Compilazione Online Domanda Servizio Civile

Sviluppare Applicazioni per Android

03FYZ TECNICHE DI PROGRAMMAZIONE Esercitazione di Laboratorio 03 es.1 23 Marzo 2016

DISPENSA ACCESS (OFFICE 2010 BETA)

Cosa sono le maschere

IMPORTAZIONE PRESENZE DA RILEVATORI ELETTRONICI. tramite file tracciato

Esercizi lezione 7. Esercizio A Progettate un'applicazione Android che consenta di fare una telefonata. Pag. 1/9

3.5.1 PREPARAZ1ONE I documenti che si possono creare con la stampa unione sono: lettere, messaggi di posta elettronica, o etichette.

D B M G Il linguaggio HTML

Esempio su strutture dati dinamiche: ArrayList

Inserire record. Microsoft Access. Inserire/modificare record. Inserire record. Cancellare record. Inserire/modificare record

WORD PROCESSING.

GUIDA RAPIDA EDILCONNECT

SISTEMA GESTIONE TOMBINI

Aule. La classe in questo caso è composta solamente dal nome. Inserire quindi tale attributo all'interno della casella di testo indicata.

Telephony Appliance BNTA 2.0 Guida Rapida per l installazione

ACCESSO AI SERVIZI RISERVATI DI RTRT

Indice generale. Prefazione...xiii. Introduzione...xv. Android e Java per Android...1

Manuale d istruzioni per l uso della web-mail di ANDI

AWN. Manuale utente Web Mail. Rev AWN ArchiWorld Network. Pag. 1 / 49. v Manuale utente della Web Mail

MANUALE OPERATIVO PROGRAMMA DI GESTIONE DATI DI SENSIBILITÀ AGLI ANTIBIOTICI.

Introduzione alle classi e agli oggetti. Walter Didimo

Funzioni Principali dell APP ENTR

Elaborato Shell. Elementi di architettura e sistemi operativi 2016/2017

Metodi. Un metodo è una porzione di codice a cui si associa un nome. Un istruzione eseguita da un metodo può essere:

Tesina esame Programmazione di Sistemi Mobile Realizzato da Roberto Giuliani Matricola icloud. Inserimenti, modifiche e cancellazioni

Programmazione Android. Luca Morettoni

Istruzioni per la Compilazione Online Domanda Servizio Civile

Esercizio 1: archivio CD e DVD

Prova d Esame Compito A

Programmazione a oggetti

Riferimento rapido dell'applicazione Novell Filr 2.0 Web

REMOTE DISK. GUIDA UTENTE v 2.2

Utente Istruzioni per la Compilazione Online Domanda Servizio Civile

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Rotary. Portale Web. rev. portale

@2011 Politecnico di Torino 1

Programmazione ad Oggetti

REVISIONE DESCRIZIONE EMISSIONE

Direzione Didattica e Servizi agli Studenti. Centro Linguistico e Risorse Digitali per la Didattica DIDATTICA ONLINE IL FORUM

IMMAGINI INTRODUZIONE

Ratei e Risconti. La soluzione gestionale per te e per il tuo lavoro

MANUALE UTENTE PROCEDURA PLANET WEB INTERPRISE (II edizione)

Il diagramma delle classi è raffigurato in Figura 1, insieme alla descrizione della responsabilità sulle associazioni.

Transcript:

Android Intent, ListView e Adapter Corso di programmazione di sistemi mobile 1

Intent Uno degli argomenti di maggior interesse nell architettura di Android, è sicuramente costituito dalla possibilità delle activity di richiamarsi tra loro e di riutilizzare activity per eseguire azioni che possono essere comuni a più applicativi. Un intent, come il nome stesso suggerisce è un intenzione, una sorta di richiesta da parte di un applicazione di poter accedere ad una risorsa. Quando un applicazione ha la necessità di eseguire una particolare operazione non farà altro che creare un Intent richiedendo l utilizzo di una qualche risorsa, o componente, in grado di poterlo esaudire. Un qualsiasi intent necessiterà quindi delle informazioni relative all operazione che si intende eseguire e dovrà essere a conoscenza del tipo di dati su cui essa opera. A volte l intent sarà esplicito e quindi si conoscerà a priori chi sarà in grado di risolverlo. In questo caso dovremo specificare noi la classe da eseguire. In altri casi invece non sappiamo chi risolverà l intent, il nostro compito sarà quello di specificare l azione da eseguire pur non conoscendo il destinatario. Corso di programmazione di sistemi mobile 2

Intent Espliciti Vengono detti Intent Espliciti quelli in cui il componente chiamato è conosciuto in fase di creazione dell Intent. Intent intent = new Intent(CurrentActivity.this, SecondActivity.class); startactivity(intent); Per farlo è necessario creare un oggetto di tipo Intent, passando come parametri al costruttore il riferimento al Context attuale e la classe dell Activity che vogliamo lanciare. Successivamente è sufficiente invocare il metodo startactivity, passando l Intent appena creato. Di base le varie Activity si alternano all interno dello stesso stack, è comunque possibile decidere come organizzarle a livello di task e di processo. Questo è possibile impostando diversi flag dell Intent o configurazioni dell Activity per poter configurare ogni aspetto del task in cui l attività sarà eseguita Corso di programmazione di sistemi mobile 3

FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_SINGLE_TOP FLAG_ACTIVITY_NO_HISTORY FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS FLAG_ACTIVITY_BROUGHT_TO_FRONT FLAG_ACTIVITY_FROM_BACKGROUND FLAG_ACTIVITY_MULTIPLE_TASK FLAG_ACTIVITY_RESET_TASK_IF_NEEDED FLAG_ACTIVITY_CLEAR_TOP lancia o ripristina l Activity all interno del task con lo stesso valore di affinità se l Activity richiesta è già in cima allo stack non ne viene creata una nuova istanza l Activity avviata non viene inserita nello stack delle attività elimina l Activity corrente dall elenco delle attività recentemente avviate permette di notificare all attività che è stata portata in foreground in quanto già esistente permette di notificare ad un Activity che non è stata avviata da un azione dell utente ma ad esempio da un servizio utilizzato insieme a NEW_TASK, premette di avviare un attività all interno di un proprio task permette la cancellazione della storia di un task, impostando l Activity come root dello stesso elimina tutte le Activity nello stack, inclusa quella che ha avviato l intent Corso di programmazione di sistemi mobile 4

è possibile configurare le activity anche attraverso l attributo android:launchmode attraverso l elemento <activity> nel file AndroidManifest.xml multiple 0 valore di default, corrisponde alla creazione di una nuova istanza ad ogni lancio singletop 1 permette di non avviare più istanze della stessa activity, equivalente al flag Intent.FLAG_ACTIVITY_SINGLE_TOP singletask 2 per lanciare una nuova attività all interno di un nuovo task, se il task esiste già, verrà portato in foreground singleinstance 3 permette di creare solo un istanza dell Activity la quale è associata ad uno e un solo task Ogni volta che un attività viene chiamata da un intent diverso da quello che l ha invocata in precedenza viene richiamato il metodo: public void onnewintent(intent intent) Corso di programmazione di sistemi mobile 5

Manifest Se si esegue il metodo startactivity passando un intent esplicito è necessario che l acitivity sia dichiarata all interno del manifest, altrimenti l applicazione lancia un eccezione. Per dichiarare un activity nel manifest basta semplicemente creare un nuovo tag xml all interno di application e alla proprietà name dichiarare la classe che estende Activity. <application <activity android:name=".mainactivity"> <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> <activity android:name=".secondaactivity"/> </application> Corso di programmazione di sistemi mobile 6

Intent Impliciti Sono definiti intent impliciti quelli in cui il componente non è indicato in fase di creazione dell oggetto ma al suo posto viene descritta l azione che deve essere eseguita, delegandone la gestione ad un activity che dichiara di essere in grado di svolgere tale compito. Esempio richiesta di apertura di una pagina web: Intent intent = new Intent(Intent.ACTION_VIEW); intent.setdata(uri.parse("http://developer.android.com/"); startactivity(intent); Esempio richiesta di condivisione del testo: Intent intent = new Intent(Intent.ACTION_SEND); intent.putextra(intent.extra_text, "Prova condivisione testo!"); intent.settype("text/plain"); startactivity(intent); Esempio custom: Intent intent = new Intent(MY_ACTION); intent.putextra(my_value, 123); startactivity(intent); Corso di programmazione di sistemi mobile 7

Intent-Filter L intent filter è il tag xml che si occupa di dichiarare quali azioni e categorie e dati l activity può svolgere. <activity android:name=".mainactivity"> <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> <activity android:name=".shareinimageactivity"> <intent-filter> <action android:name="android.intent.action.send" /> <category android:name="android.intent.category.default" /> <data android:mimetype="image/*" /> </intent-filter> </activity> Corso di programmazione di sistemi mobile 8

ACTION: descrive il tipo di azione, può assumere valori di sistema oppure azioni specifiche per la nostra applicazione. Alcune azioni del sistema android sono: ACTION_ANSWER ACTION_CALL ACTION_DELETE ACTION_DIAL ACTION_EDIT ACTION_INSERT ACTION_PICK ACTION_SEARCH ACTION_SENDTO ACTION_SEND ACTION_VIEW ACTION_WEB_SEARCH Per rispondere a una chiamata telefonica Per iniziare una chiamata corrispondente al numero descritto dall'uri Per eliminare il dato specificato nell'uri Per effettuare una chiamata al numero specificato nell'uri Per editate il dato specificato nell'uri Per inserire un elemento specificato nell'uri Per scegliere un elemento Per effettuare una ricerca Per l invio del messaggio specificato nell Uri Per l invio dei dati specificati nell Uri Per visualizzare i dati specificati nell Uri Per effettuare una ricerca sul web con i dati passati Corso di programmazione di sistemi mobile 9

CATEGORY: elemento opzionale indica le circostanze in cui l azione può essere utilizzata. Si possono dichiarare più category per la stessa action. ALTERNATIVE SELECTED_ALTERNATIVE BROWSABLE DEFAULT GADGET HOME LAUNCHER Le azioni alternative all'azione standard sull'oggetto Simile alla categoria ALTERNATIVE ma verrà risolta in una singola selezione Specifica azioni disponibili dal Browser Azione di default su un componente e per poter usare gli intent espliciti Si specifica un'attività che può essere inclusa in un'altra attività Specificando questa categoria e non specificando l'azione, si propone un'alternativa allo schermo home nativo Specifica un'attività che può essere eseguita dal launcher del sistema Android Corso di programmazione di sistemi mobile 10

DATA: permette di specificare che tipi di dati il cui componente può gestire. La sintassi è <scheme>://<host>:<port>/<path> android:scheme android:host android:port android:path android:mimetype Lo schema (esempio: content or http) Nome dell host valido (es. google.com) Eventuale porta dell'host Eventuale un path dell'uri (es. /transport/boats/) Tipo di dato che il componente è in grado di gestire Corso di programmazione di sistemi mobile 11

Passaggio di dati tramite Intent In alcuni casi può essere necessario passare informazioni all activity che stiamo avviando, mentre in altre situazioni può essere richiesto che sia l activity invocata a restituirci dei risultati. Per passare informazioni all activity è sufficiente invocare, sull oggetto intent, il metodo putextra(..) i cui overload ci consentono di inviare dati di vario tipo (String, int, Serializable...) L activity che viene lanciata può recuperare le informazioni associate al relativo intent attraverso il metodo getintent(). È necessario invocare poi il metodo appropriato a seconda del tipo di informazioni che si vogliono recuperare e di come queste sono state passate all intent. Per esempio, per recuperare le informazioni passate come stringa: Intent intent = getintent(); String text = intent.getstringextra(extra_nome); Corso di programmazione di sistemi mobile 12

Per far si che sia l activity a restituirci informazioni è necessario utilizzare il metodo startactivityforresult(intent intent, int requestcode) anziché startactivity(intent intent). L activity che viene lanciata deve restituire le informazioni richieste attraverso la creazione di un nuovo oggetto intent il quale sarà passato alla funzione setresult(..)prima della chiamata del metodo finish(). //si crea un nuovo intent inizialmente vuoto per restituire il risultato Intent resultintent = new Intent(); //si aggiunge all'intent, in forma di extra, le info da restituire resultintent.putextra(form_key_name, "prova"); //imposto l'intent dichiarando che la richiesta è andata a buon fine setresult(result_ok, resultintent); finish(); I risultati possono essere recuperati nell apposita funzione di callback onactivityresult(int requestcode, int resultcode, Intent data). Il parametro requestcode consente di associare la richiesta alla corrispondente risposta. Corso di programmazione di sistemi mobile 13

Liste/Griglie/Spinner Nelle applicazioni mobile capita spesso di dover mostrare degli elementi all interno di una lista. La lista può essere visualizzata in sequenza (ListView), in griglia (GridView), a selezione (Spinner). Tali elementi vengono mostrati con la stessa UI cambiando il contenuto al suo interno. Ad un evento di click su un elemento si vuole visualizzare il dettaglio dell elemento selezionato. In Android l entità che ha il compito di gestire e visualizzare gli elementi è l ADAPTER. Esistono diverse implementazioni dell interfaccia adapter come: BaseAdapter che implementa diversi metodi ma lascia definire allo sviluppatore la View da visualizzare ArrayAdapter che implementa i metodi per gestire e manipolare (add, remove ) le liste. Corso di programmazione di sistemi mobile 14

Adapter Fornisce l accesso ai dati ed è responsabile per la realizzazione delle View. I metodi principali da definire sono: public abstract Obejct getitem(int position); //restituisce l oggetto in posizione position; public abstract getcount(); // restituisce il numero di elementi che fanno parte dell adapter; public abstract long getitemid(int position); // l id associato all elemento in posizione position; public abstract View getview(int position, View convertview, ViewGroup parent) //instanzia la view da visualizzare nella posizione indicata, convertview è il riferimento a una precedente View non più visibile e parent è il riferimento all'oggetto ViewGroup che contiene le singole View dei record; Corso di programmazione di sistemi mobile 15

ListView Per rappresentare elenchi di dati in un applicazione si usano le ListView, con la possibilità di effettuare scrolling e di visualizzare i dati in riga uno sotto l altro. <ListView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/listview" /> Si può successivamente specificare a quale fonte di dati farà riferimento la lista, e il layout di ogni singola riga. ListView listview=(listview)findviewbyid(r.id.listview); String[] values= new String[]{"primo","secondo","terzo", "quarto"}; ArrayAdapter<String> arrayadapter = new ArrayAdapter<String> (this, R.layout.row, R.id.textViewList, values); listview.setadapter(arrayadapter); Corso di programmazione di sistemi mobile 16

Spinner Lo Spinner è il classico menu a tendina. Si possono definire le voci tramite un array di stringhe nei values della cartella res oppure come per le listview utilizzando un adapter <Spinner android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/spinner" android:entries="@array/persona"/> <string-array name="persona"> <item>maschio</item> <item>femmina</item> </string-array> Corso di programmazione di sistemi mobile 17