Estructurem la informació
Els objectes de tipus TinyDB permeten emmagatzemar informació de tipus text indexada mitjançant unes etiquetes que identifiquen cada registre. Per accedir a les dades emmagatzemades disposem d'un seguit de procediments i funcions. Aquestes darreres ens retornaran el resultat immediatament després de la crida.
Creem una petita agenda
En aquest bloc proposem crear una petita agenda en el nostre dispositiu que ens permetrà apuntar tasques que tinguem pendents.
Creem una interfície amb un aspecte com el següent que ens ha de permetre introduir esdeveniments a recordar, consultar-los i esborrar-los:
Per decidir quina operació volem dur a terme, disposarem d'un parell de botons per gravar i esborrar esdeveniments de l'agenda i un ListPicker que ens permetrà seleccionar quin esdeveniment volem consultar.
Per definir un esdeveniment n’hi haurà prou amb introduir els valors als camps de text i seleccionar una hora i una data en els objectes TimePicker i DatePicker que es mostren en els Labels corresponents:
Un cop l’usuari ha omplert tots els camps, emmagatzemem aquesta informació en un sol registre separant cada un dels valors per una coma. Aquesta forma de desar les dades s’anomena CSV.
El codi que utilitzem per emmagatzemar l’esdeveniment al TinyDB és el que segueix:
Com es veu en el codi anterior, abans de gravar comprovem que:
- els camps de text continguin informació,
- els camps de text no continguin comes (utilitzem aquest element com a separador, i
- no existeixi un esdeveniment a l'agenda amb el títol que volem gravar.
Per poder consultar les tasques gravades n’hi haurà prou amb seleccionar la tasca que ens interessi del ListPicker. Per poder-ho fer, caldrà però que actualitzem el contingut del ListPicker abans d'obrir-lo, amb la llista d’etiquetes existents al TinyDB.
Un cop escollim un element, ens actualitzarà els camps amb la informació sobre la tasca en concret:
Per eliminar una tasca en concret, l’hem de seleccionar del ListPicker i després esborrar-la:
Altres usos de de l'objecte TinyDB
A més a més d’utilitzar l'objecte de tipusTinyDB per emmagatzemar dades de forma permanent en el propi dispositiu, també ens pot servir per transmetre informació entre diferents pantalles dins la pròpia aplicació.
Quan creem variables globals a App Inventor, no son realment globals ja que tan sols es poden utilitzar dins la pantalla en la qual han estat creades. Quan des d’una finestra n’obrim una altra la podem cridar facilitant-li un paràmetre que es podrà capturar en la nova finestra.
En el primer bloc veiem com enviem un valor en cridar una pantalla diferent, i en en el segon veiem com el podem recuperar des de la nova pantalla. Aquest sistema ens permet però recuperar tan sols una sola variable.
Per compartir més dades podem crear un objecte TinyDB a cada finestra i gravar-hi les dades que ens interessi compartir utilitzant els mateixos tags. D’aquesta forma, com que el contingut de tots els TinyDB es grava en un mateix arxiu, si gravem dades usant les mateixes etiquetes, podrem intercanviar informació entre diferents finestres.
En la imatge anterior el primer bloc, Button1.Click, emmagatzema la informació en el TinyDB abans de cridar a una altra finestra i el segon bloc, Screen1.Initialitze, recupera la informació que s’ha desat al TinyDB en la finestra Screen2. El codi que escriurem en l’altra finestra serà el que segueix: