TinyDB - uma solução de dados persistente persistente Existem algumas alternativas diferentes para salvar informações em App Inventor. O mais omum e! penso eu! mais f"il de usar # o TinyDB! e eu vou mostrar-l$e omo fa%&-lo. TinyDB # uma solução de arma%enamento arma%enamento de de dados não # uma solução solução de arma%enamento arma%enamento de ar'uivos. (o& pode us"-lo para salvar o texto! um amin$o para um ar'uivo! n)meros! listas! valores *ooleanos! et. Este tutorial ir" mostrar-l$e omo riar uma lista de ontatos usando TinyDB. (amos omeçar omo sempre! om tela de design. A'ui est" a lista de omponentes e uma imagem de omo eu ten$o a on+guração da interfae do usu"rio, •
4 textboxes
•
2 buttons
•
1 checkbox
•
1 listpicker
•
1 imagepicker
•
1 image
•
4 vertical arrangements
•
1 horizontal arrangement
•
1 Notifier
•
1 TinyDB
•
Como voc po!e ver na imagem !o emula!or" as caixas !e texto s#o o nome !a pessoa" !ata !e nascimento" n$mero !e telefone e en!ere%o !e e&mail' N(s !ar ao usu)rio a op%#o !e escolher se *uerem !efinir uma imagem para a pessoa e se a pessoa + um parente' ,p(s o seu !esign + como voc gosta" mu!e para o e!itor !e blocos'
A primeira oisa 'ue vamos fa%er # de+nir nossas vari"veis! on+guração de nosso evento reen.Initiali%e e esrever o nosso proedimento de reiniiali%ação. /aver" apenas uma vari"vel neess"ria para este apliativo! e isso # 0A1E2IT! iniiali%ado omo uma lista va%ia. 0o aso de iniiali%ação! vamos di%er o app para de+nir a vari"vel para o tag TinyDB de mesmo nome! e de+na o valor 3se não $" tag3 para uma lista va%ia. Esta segunda entrada no m#todo TinyDB.4et(alue # novo na App Inventor 5. Ele remove a neessidade de a 6 outra delaração se 'ue era neess"rio no AI 7lassi! omo mostrado no meu tutorial TinyDB anterior. O valor desta entrada varia de app para app, para este! ele preisa ser uma lista va%ia! uma ve% 'ue a vari"vel 'ue estamos de+nindo neessidades para ser uma lista8 em um proedimento de alta pontuação 'ue poderia ser de+nido omo um n)mero para indiar 'ue não $" nen$uma pontuação salvo. Depois de se ter veri+ado o TinyDB para uma lista de nomes! vamos de+nir os elementos 2ist9i:er para a vari"vel glo*al para 'ue os nomes estarão dispon;veis para ver ada ve% 'ue o apliativo # exeutado. ,gora *ue a parte !e inicializa%#o estiver conclu-!a" vamos escrever o proce!imento !e reinicializa%#o' .le precisa !efinir to!as as caixas !e texto em branco" limpar *ual*uer imagem *ue po!e ser vis-vel" e !esmar*ue a caixa !e sele%#o valor' .ste proce!imento ser) utiliza!o !epois !e salvar algu+m no banco !e !a!os" e se pressionar o bot#o !e reset' , chama!a !e proce!imento + tu!o o *ue + necess)rio para o bot#o !e reset" portanto" melhor para tirar isso !o caminho agora" e em segui!a" !efina o evento ,fter/icking !o imagepicker0 ele !eve !efinir a imagem para a sele%#o !o seleciona!or'
As peças f"eis são feitas8 agora para o tra*al$o pesado. (amos enfrentar o *otão salvar seguinte. 0ma ve% 'ue sa*emos o nome # )nio 'ue pode salv"-lo para o *ano de dados. ?ueremos usar o nome da pessoa 'ue a tag para o TinyDB e salvar todas as outras entradas do apliativo omo uma lista de valores para essa pessoa. Depois 'ue salvar o nome para o *ano de dados 'ue pode adiionar o nome @ lista de nomes! arma%enar a lista de nomes para o *ano de dados! *em omo! e de+nir os elementos 2ist9i:er mais uma ve% para a vari"vel lista de nomes. Depois disso! n
A )ltima peça do 'ue*ra-a*eça # o evento 2ist9i:er.After9i:ing! onde 'ueremos 'ue o usu"rio se=a apa% de ver as informações 'ue eles t&m guardado para ada pessoa na lista de ontatos. 9rimeiro vamos de+nir o nome para a seleção! e depois usamos a seleção omo a
tag para o nosso m#todo TinyDB.4et(alue para de+nir o resto dos omponentes para seus valores apropriados. 0ão se es'ueça de 'ue esses valores de ;ndie são espe;+os, a posição 'ue vo& salvar o n)mero de telefone para neessidades a serem espei+ados a'ui8 ou se=a! se o n)mero de telefone # a primeira oisa na lista para a pessoa 'ue seria no ;ndie . E # isso Test"-lo. ?uando vo& salvar um nome para o *ano de dados # 'ue permitem 'ue vo& salv"-lo novamente ?uando vo& esol$e um nome da 2ist9i:er! fa%er tudo orretamente preen$er as aixas de texto om os valores de+nidos originalmente (o& pode *aixar o
>sando TinyCe*DB - uma solução de dados persistente *aseado na e* /" algumas pessoas perguntando nos fma ve% 'ue vo& ten$a o*tido a on+guração do serviço! a ler. (amos omeçar om os omponentes,
•
1 label
•
2 text boxes one set to multiline
•
1 button
•
1 listpicker
•
1 clock
•
1 Tiny3ebDB
•
1 Notifier
•
1 ertical,rrangement
•
1 5orizontal,rrangement
(o& pode ver omo eu arran=ei o apliativo na imagem @ es'uerda! *em omo os nomes atri*u;dos aos elementos. >ma ve% 'ue vo& ten$a o*tido-lo a instalação omo vo& dese=alo! a*ra o editor de *loos e vamos $egar a ela. /" relativamente pouos *loos para este apliativo! e não um monte de omplexidade. A primeira oisa 'ue preisamos fa%er # de+nir uma vari"vel glo*al! listOTags! omo uma lista va%ia.
>ma ve% feito isso! vamos on+gurar o evento li'ue de *otão. 9reisamos de um mutante se o *loo para ter uma ondição mais. 0
doumento! txtDo0ame.text. Eu uso o *loo guarnição da gaveta texto para garantir 'ue não $" nen$um espaços @ direita o usu"rio es'ueeu de remover! mas isso não # neess"rio. e o nome inserido est" na lista! 'ueremos alertar o usu"rio e t&-los esol$er outra oisa para $am"-lo! por isso preisamos do 0oti+er.$o1essageDialog preen$ida om um alerta de algum tipo. 0ma ve% feito isso! preisamos arma%enar outro valor! desta ve% a lista! so* a lista de eti'uetas para 'ue possamos importar todos os dados do Ce*DB. 9or'ue não $" nen$uma função 4etTags para o Ce*DB! temos 'ue ter uma maneira de sa*er o 'ue est" guardado l" para 'ue possamos visuali%ar a informação mais tarde! sem ter 'ue ir para o site para ol$ar. Agora preisamos arregar a lista no 2ist9i:er! ative a 2ist9i:er! e remover o texto das duas aixas de texto. 7om o Ce*DB! por'ue $" um omponente do Internet para ele! ele tem um evento exlusivo 'ue vo& não vai enontrar om o TinyDB normais, (aluetored. 7om este evento! podemos deixar o usu"rio sa*er 'ue a informação 'ue eles enviados para o DB foi salvo! e não resultou em um erro! por isso vamos usar o noti+ador para mostrar um alerta 'ue di% simplesmente 3Bano de dados atuali%ado om suesso.3 (amos orrigir-se os eventos reen.Initiali%e e lstp2oad.After9i:ing om um omando TinyCe*DB.4et(alue. A tag para a tela ser" a mesma 'ue usamos para fa%er upload de nossa lista para o DB, lista. 9ara o 2ist9i:er! a mara ser" a seleção a partir do 2ist9i:er! por'ue eles são todas as eti'uetas originais no DB om o texto digitado da outra aixa omo seus valores.
Talve% vo& este=a se perguntando o 'ue o rel
foi fe$ado. Eles se essas duas veri+ações são falsas Ha mara não # listar e o valor não # uma lista! em seguida! são! pelo proesso de eliminação! igual @ seleção do 2ist9i:er e texto assoiado! por isso! de+nir o txtDoument.Text igual para o valor e n
7omo aessar o *ano de dados ?2ite loal no seu dispositivo a partir do App Inventor $amar um apliativo Lava 9rovavelmente vo& 'uer ler este primeiro, O 'ue # ?2ite eo 'ue # um *ano de dados relaional L" em a*ril 5GM /ossein apresentou o seu aprimoramento ?2ite muito agrad"vel para o App Inventor! 'ue oferee aesso ao *ano de dados ?2ite loal so*re dispositivos Android para App Inventor apliativos. 0o entanto! omo =" foi dito, o p)*lio-alvo prim"rio para o App Inventor são pessoas om poua ou nen$uma experi&nia em programação. E deixe-me aresentar algo para fa%er 'ue um pouo mais lara, não $" p)*lio-alvo seund"rio O 'ue signi+a! reale ?2ite de /ossein em sua forma atual nuna vai fa%&-lo em Inventor 1IT App. 9or isso eu inventei o app a=udante ?2ite! 'ue permite 'ue apliativos App Inventor para aessar o *ano de dados ?2ite loal usando o Ativity tarter. Isso a=uda a App Inventor pro=etos para usar um *ano de dados relaional om todas as suas vantagens Honde l"usula! por grupo! por +m! as refer&nias entre ta*elas apenas para itar alguns! sem neessidade de ter aesso @ internet /" tam*#m uma funionalidade de exportação 6 importação de *ano de dados ?2ite. 0ota, Este exemplo s< funiona! se o ?2ite $elper app Lava est" instalado no seu dispositivo.
.6/78T9 oc po!e enviar o texto :.xportar: para o banco !e !a!os eo banco !e !a!os ;<=ite ser#o exporta!os para o ar*uivo >s*lite>/urai!a'!b no seu cart#o ;D' Caso o !iret(rio n#o existe" ele ser) cria!o' Caso o ar*uivo ?) existe" ele ser) substitu-!o' No caso !e voc estiver interessa!o em converter o formato !e banco !e !a!os em um ar*uivo !e texto ,;C@@" voc po!e usar o ;hell !e linha !e coman!o para o ;<=ite eo :'!ump: coman!o' /ara obter mais informa%Aes sobre isso" ve?a a*ui' 5) um agra!)vel extens#o ;<=ite anager !ispon-vel para o navega!or irefox" o *ue torna mais f)cil para gerenciar o banco !e !a!os' 7briga!o ;onny pela informa%#o' @/78T9 oc po!e enviar o texto :@/78T: para o banco !e !a!os eo banco !e !a!os ;<=ite ser#o importa!os !o ar*uivo >s*lite>/urai!a'!b no seu cart#o ;D' Caso o ar*uivo n#o est) l)" um :ar*uivo n#o encontra!o: erro ser) exibi!a' ;creenshots Declara%Aes *ue n#o retornam linhas" o fornecimento :feito:" como resulta!o caso isso pu!esse ser
executa!o com sucesso ver imagem 1' 7 resulta!o !a instru%#o ;.=.CT ser) forneci!o como tabela C;" *ue po!e ser converti!o facilmente em uma lista !e listas ver imagem 2' No caso !e ocorrer um erro" este ser) !evolvi!o para o ,pp @nventor como .8878 ver i magem '
restrições (;rgulas em olunas não são permitidos! por'ue as v;rgulas são usadas omo delimitadores de ampo nas seleione resultados da onsulta. Apenas demonstrações individuais são permitidos Hdenuniado por ponto e v;rgula. 0ão $" transações são poss;veis.