Terza lezioneandroid
-
Upload
silvano-natalizi-itis-alessandro-volta-perugia -
Category
Education
-
view
2.445 -
download
0
description
Transcript of Terza lezioneandroid
Apr 13, 2023
Terza lezione Android
Silvano Natalizi
Creare un terzo progetto android
lancia android.bat
android create project --target 3 --path ./Studente
--activity Studente --package com.database.tutorial
cd studente Android
Lancia un simulatore con api level 3
Prova l’emulatore ant install
La prima voltra trova il dispositivo offline
Ripeti: ant install Controlla nell’emulatore che sia stata
installata l’applicazione Studente Lancia l’applicazione studente Per default viene creata l’applicazione
che saluta: “Hello World, Studente”
Il nostro obiettivo
Creare un’applicazione con la quale ogni studente può memorizzare i propri voti.
Che cosa occorre ?
Interfaccia grafica Modello dei dati con il database Controllore per la logica del business
L’interfaccia grafica
Il database studente
Tabella voto Con le colonne:
id nome data voto motivo materia prof
Modificare il file main.xml
open il file studente/res/layout/main.xml Questo è quello che vedi:
Modificalo al seguente modo:
Ricompila e installa: ant install
Organizziamo il database
Per memorizzare permanentemente i dati dei voti dello studente è necessario organizzare il database
Creare il database studente Creare la tabella voto con il comando:
create table voto (_id integer autoincrement, datavoto char(10), voto real, motivo text, materia varchar(50), prof varchar(50), nome varchar(50), primary key(_id));
Inserire i dati nella tabella con il comando: insert into voto (datavoto, voto, motivo, materia, prof, nome);
Quali sono le istruzioni che android ci fornisce per gestire i database ?
Dobbiamo inserire i precedenti comandi all’interno di opportune istruzioni java
Per fare il programma all’interno del quale inserire i comandi del database, dobbiamo sapere quali metodi ci offre android
Ogni metodo appartiene ad una classe, pertanto dobbiamo sapere quali sono le classi interessate
Il package android.database.sqlite
Quale classe usiamo ?
SQLiteDatabase è la classe che ci interessa: Infatti, in particolare ha i metodi:
openOrCreateDatabase(…) // per creare/aprire un database execSQL(…) //per creare una tabella, inserire i dati,
modificarli, eliminarli
openOrCreateDatabase(…)
Come fare le istruzioni
private final String DB_NAME = “Studente.db";
SQLiteDatabase database = null;
try{ database = SQLiteDatabase.openOrCreateDatabase(DB_NAME,
CREATE_IF_NECESSARY, null);
} catch (SQLiteException e) {
e.printStackTrace();
}
execSQL(…)
Come scrivere l’istruzioni per execSQL()
database.execSQL("CREATE TABLE IF NOT EXISTS voto
(_id integer autoincrement, datavoto char(10), voto real, motivo text, materia varchar(50), prof varchar(50), nome varchar(50), primary key(_id));”);
Proviamo la creazione
Per il momento limitiamoci a verificare la corretta creazione del database e della tabella voto.
Inseriamo le precedenti istruzioni nel programma controllore Studente.java
Apriamo con scite tale sorgente ed inseriamoci le seguenti istruzioni:
Studente.java – 1 parte
Studente.java – 2 parte
Compilare e installare
ant install Dobbiamo verificare che è stato creato il database
Studente.db Dobbiamo verificare che è stata creata la tabella voto.
Eseguire l’applicazione nell’emulatore
Studente è l’applicazione. Clicca su di essa per eseguirla:
Si ottiene la form , ma non sappiamo se il database è stato creato correttamente
Torna a menù e scegli Dev Tools
Scegli Package Browser
Scegli il nostro package
Vediamo il percorso del database
/data/data/com.database.tutorial/databases/Studente.db
Possiamo accedere al database
sqlite3 /data/data/com.database.tutorial/databases/Studente.db
e vediamo che la tabella voto è stata correttamente creata
Adesso organizziamoci per l’inserimento dei dati nella tabella
All’inizio implementiamo l’operazione di inserimento direttamente all’interno del controllore, senza delegare tale operazione al modello, che fra l’altro ancora non abbiamo creato.
Quando dobbiamo eseguire l’inserimento ?
Ogni qual volta l’utente preme il bottone “inserisci” !
Nel controllore Studente.java acquisiamo il bottone del xml layout ed associamogli la classe anonima di ascolto con il codice di inserimento.
Le istruzioni di inserimento
String inserisci="Insert into voto (datavoto,voto,motivo,materia,prof,nome) values ('"+ datavoto+"',"+voto+",'"+motivo+"','"+materia+"','"+prof+"','"+nome+"');";
database.execSQl(inserisci);
Inserisci dei dati e premi il bottone save
Anatomia del metodo onClick(…) - 1
Le istruzioni 24-30 prelevano i valori digitati nelle caselle di testo identificate da R.id.nome e le assegnano alle variabili di tipo EditText. Perché findViewById(…) restituisce un oggetto di tipo View
Anatomia del metodo onClick(…) - 2
Queste istruzioni trasformano i valori contenuti in EditText in stringhe e nel caso della 31 in numero intero.
Anatomia del metodo onClick(…) - 3
Critica è la scrittura dell’istruzione 37-38 per preparare la stringa di inserimento dei dati. Osserva come ogni variabile che contiene i dati da inserire sia racchiusa tra una coppia di apostrofi, di doppie virgolette e di un doppio + .
Compilare ed installare e digitare alcuni dati di prova
ant install
Verifichiamo che i dati digitati siano effettivamente inseriti nel database
adb –s emulator-5554 shell sqlite3 /data/data/com.database.tutorial/databases/Studente.db select * from voto;
The End
2. Ristrutturare il codice per inserire il modello e una classe di helper per il database
Come dobbiamo proseguire ?
1.inserire il codice per mostrare la lista di
tutti i voti per data, per materia
per mostrare la lista dei voti per materia per data
per mostrare la media dei voti per materia.