Desenvolupament d'aplicacions per a Android

Tutorial Exemples     Recursos CITCEA
Llibre Projectes Dades pràctiques   Inici

2- Fem un programa per veure els elements de la taula

Comencem per definir els elements que necessitem. Tindrem dues vistes, una per la llista completa i una per a les dades de la persona triada. En el cas de la llista completa, ens cal un botó per actualitzar la llista que serà important si la taula canvia sovint. També ens cal un ListPicker per triar la persona de la que desitgem veure els detalls. D'altra banda, ens caldrà una etiqueta per poder mostrar la llista de persones i un botó per tornar. Tots els botons aniran disposats horitzontalment.

Disposició dels elements

Propietat Valor Comentaris
Nom HorizontalArrangement_Menu Aquest nom l'hem de posar en el requadre Components
Width Fill parent
AlignHorizontal Center

Propietat Valor Comentaris
Nom Button_Actualitzar Aquest nom l'hem de posar en el requadre Components
Text Actualitzar
FontBold Activat
TextColor Yellow
BackgroundColor Blue
Shape rounded

Propietat Valor Comentaris
Nom ListPicker_Detalls Aquest nom l'hem de posar en el requadre Components
Text Tria persona
FontBold Activat
TextColor Yellow
BackgroundColor Blue
Shape rounded

Propietat Valor Comentaris
Nom Button_Tornar Aquest nom l'hem de posar en el requadre Components
Text Tornar
FontBold Activat
TextColor Yellow
BackgroundColor Blue
Shape rounded

També necessitarem una etiqueta per a les dades de la persona i una imatge per a la fotografia. Per acabar, ens caldra un FusiontablesControl.

Propietat Valor Comentaris
Nom Label_Persona Aquest nom l'hem de posar en el requadre Components
Width Fill parent

Propietat Valor Comentaris
Nom Image_Foto Aquest nom l'hem de posar en el requadre Components

Propietat Valor Comentaris
Nom FusiontablesControl_Taula Aquest nom l'hem de posar en el requadre Components
KeyFile Arxiu p12 Cal pujar l'arxiu amb extensió p12 que hem descarregat abans
ApiKey AIzaSyAlbrNoGbBHGK6nK-btgyNRTq__Y8Ycdcw El codi ApiKey que hem creat abans

El programa serà el següent. Guardarem l'identificador de la taula en una variable. També crearem una variable Llista que serà certa quan intentem recuperar la llista sencera i falsa quan es tracti d'un sol element de la llista. Així podrem fer servir trossos de programa comuns per a les dues coses.

La llista DNI ens guardarà els números de DNI de tots els elements de la llista. Això ens permetrà saber quin és el DNI que correspon a l'element seleccionat; aquest valor el guardarem a la variable Persona.

En el moment d'obrir l'aplicació configurarem el FusiontablesControl i amagarem els elements que no tenen utilitat fins que no s'han carregat dades: l'etiqueta on posarem les dades, el botó de tornar, la imatge i el ListPicker. Tot seguit carreguem la llista de persones (variable Llista activada).

Programa

Atenció: El nom de la taula, l'ApiKey i el correu han de ser el de la taula que hagueu creat. Els que s'han donat com a mostra corresponen a una taula que ja no existeix.

La funció Llegir s'encarrega d'anar a buscar els valors necessaris a la taula de Google. Quan llegim tota la llista hem de recuperar el nom i el DNI de totes les fileres de la taula. El DNI no el mostrarem però el farem servir d'identificador per si en algun moment hi hagués dues persones amb el mateix nom. Per llegir fem servir la instrucció SQL SELECT seguida de la llista dels noms dels elements que volem llegir separats per comes. Després hi va la instrucció FROM i el nom de la taula. És molt important que després de la paraula FROM hi hagi un espai.

La instrucció SendQuery és la que s'encarrega d'enviar la nostra comanda SQL a l'API. Podem trobar un resum de les comandes SQL a la pàgina de Google Developers. Els formats típics per a les sentència SQL de lectura són els següents:

SELECT  Camp1, Camp2[, ...]  FROM  NomTaula

SELECT  Camp1, Camp2[, ...]  FROM  NomTaula  WHERE  Camp = Valor

SELECT  *  FROM  NomTaula  WHERE  Camp = Valor

Les paraules en color verd són les pròpies del llenguatge SQL. L'asterisc ens permet indicar fàcilment que volem llegir tots els camps. Cal tenir present que si el nom del camp o el valor poden tenir comes o espais en blanc cal posar-los entre cometes simples.

Si la variable Llista és falsa llegim totes les caselles però només d'una filera. Això ho fem amb la instrucció SELECT seguida d'un asterisc que vol dir que desitgem totes les columnes seguit de la paraula WHERE i de la condició que s'ha de complir en forma d'una igualtat entre la columna i el contingut desitjat. És molt important que les paraules FROM i WHERE estiguin separades de la resta d'elements amb un espai.

Programa

Quan la comanda SQL s'hagi executat i arribi la resposta entrarem a l'acció següent que farà coses diferents segons si havíem demanat la llista o només una filera.

Si hem demanat la llista rebrem una taula amb dues columnes i diverses fileres en format csv. Aquesta taula la convertim en una llista i la guardem en la variable local Taula. Aquesta llista tindrà tants elements com fileres té la taula més una (la primera) que conté els noms de les columnes de la taula. Abans de continuar, ens hem d'assegurar que hem rebut dues o més fileres (en cas contrari la taula està buida). Ara la filera dels noms de columna no ens interessa i, per tant, fem un bucle per a la resta de les fileres. Creem una variable Filera que serà una llista que tindrà els elements d'una filera concreta. El primer element serà el número de DNI, que guardarem a la llista DNI, i el segon element serà el nom, que afegirem com a opció al ListPicker i l'afegirem a l'etiqueta que mostrarà la llista. Un cop fet tot això, mostrarem el botó del ListPicker i la llista.

Si hem demanat només una filera rebrem una llista amb dues fileres, la dels noms de columna i la sol·licitada. Agafarem la segona filera i generarem la fitxa de la persona i carregarem la imatge. Tot seguit, les mostrarem.

Programa

El botó Actualitzar i el botó Tornar tornaran a carregar la llista però aquest segon, a més, amagarà els camps que ja no són necessaris. El ListPicker mirarà el DNI de la persona triada i carregarà les dades de la persona.

Programa

Mentre fem proves, és convenient mantenir un camp de text (Label) per poder controlar la resposta que rebem quan ens connectem. Podem posar aquest camp, per exemple, entre el primer i el segon agrupaments horitzontals. En la funció GotResult del FusiontablesControl podem fer que el resultat rebut es copiï en aquest camp i així veiem què ha arribat. Quan donem el programa per acabat podem amagar aquest camp o esborrar-lo.

 

 

Licencia de Creative Commons
This obra by Oriol Boix is licensed under a Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0 Unported License.