Capítulo
8
Col lec tio n A yudante : Un Barcode Und Database Application in this Capítulo ❍ ❍ ❍
Utilizando el Barcode componente de Escáner Creando variedades multidimensionales En desarrollo y utilizando funciones de base de datos tradicional
2
C
R S S P P LEL NE NT V EC TO C O yoROF ON Un H Un P T E R E yo G H T Un yo S T Un N T : Un B Un R C
2
de la COLECCIÓN replicates la funcionalidad de el popu popular lares es !ar !arcode code aplic aplicacion aciones es de esc" esc"ner ner alunos de disponi!les en el #erca #ercado$ do$ Su Su funci%n !"sica es para escanear un LA aplicación
de AYUDANTE
!arcode !arcod e y al al#ac #acena enar r la u!i u!icac caci%n i%n y no# no#!r !re e de el o!& o!&eto eto escaneado en una !ase de datos local 'uedes utili(ar aplicaciones local$$ de esc"ner para #uc)os di*erent cosas$ El +yudante +yudante de Colecci%n podr,a soler cataloar y #antener pista de una colecci%n de #edios de co#unicaci%n co#unicaci%n co#o un D-D o CD colecci%n. colecci %n. por e&e# e&e#plo$ plo$ Ta#!i/n pueda ser utili(ado tan parte de un siste#a orani(ati0o donde ca&as o contenedo contenedores res de al#acen al#acena#iento a#iento son la!eled con i#pri#idos !arcodes$
1on !uild 1on !uildin in t)e Colle Collection ction +yudan yudante. te. you lear learn n )o2 to utili( utili(e e t)e functionality of t)e Barcode Scanner co#ponente$ T)e Barcode Scanner is Un fairly si#ple co#ponent inenio) &ust un fe 2 co#po3 funcionali onalidad$ dad$ T)e Barcode Barcode nent !lo4ues t)at pro0ide un lo t of funci Scanner Usos t)e de0ice ca#erun a sca n !arcodes$ T)e Barcode Scanner co#ponent can scan Nin5n t only traditional traditional !arcodes. pero can scan t)e increasinly popular matrix 6en al5n #o#entos called QR ta#! #!i/ i/n n $ 8R C%dios )a0e t)e capa!il capa!ility ity of or Quick Respuesta7 c%dios ta storin far #ore infor#ation t)an traditional !arcodes und open up un
lo t of intere interestinaplicaci%n stinaplicaci%n de s for usin t)e Barcode Scanner Scanner co#ponente$
Creando Ayudante de Colección 1.0 El +yuda yudante nte de Colec Colecci%n ci%n to#a 0ues 0uestro tro uso de el Tin TinyDB yDB el #"s frecuente#ente co#ponente a el ni0el pr% pr%9i#o$ 9i#o$ Uno de preunt% cuestiones so!re TinyDB es C%#o C%#o puede selecciono un un ele#ento o eti4uet eti4ueta a en TinyDB y recuperar a4uel ele#ento;< En este cap,tulo. te #uestras c%#o para utili(ar la t/cnica de stor 3 in todo utili(% eti4uetas en en TinyDB TinyDB /l de #odo #odo 4ue estirando el dato dato de la !ase de datos es controla!le$ En crear el +yudante +yudante de Colecci%n. t5 =nd fuera #"s so!re una t/cnica t/c nica ade adelan lantad tada a 4ue te de&as para cre crear ar 4ua 4uasi30 si30aried ariedades ades en #ult #u ltidi idi#e #ens nsio iona nale les s en In0e In 0ent ntor or de +p +pli lica caci ci%n %n$$ Las La s li lista stas s In0entora de +plicaci%n so son n 0ari 0a ried edad ades es de ni ni0e 0ell solo so lo en prora#aci%n tradicional$ La variedad es &usto otra #anera de decir lista$ Utili(ando al5n listo 6al!eit co#ple&o7 te9to parsin. puedes crear
3
C
3
R S S P P LEL NE NT V EC TO C O yoROF ON Un H Un P T E R E yo G H T Un yo S T Un N T : Un B Un R C
#ulti30ariedades di#ensionales en
In0entor de +plicaci%n$ Un #ulti3 la 0ariedad di#ensional au#enta el n5#ero de 0alores 4ue un solos 0ari3 la lis lista ta cap capa( a( pu puede ede te tene nerr$ Un multi-la variedad dimensional es #"s entendida entendi da si les 0isuali 0isuali(as (as co#o #esa$ Cada eti4ueta tiene dos pie(as separadas de la infor#a infor#aci%n ci%n al#acenada &unto con una co#a 4ue les separa $ El +yudante de Colecci%n al#acena el no#!re de ele#ento ele#en to y su u!icaci%n en un dos3 0ariedad di#ensional 4ue 0isuali(ado do utili(ando >esa ?3@$ puede ser 0isuali(a
Mesa 8-1 Variedad Bidimensional Sencilla Barcode $om%re& Valor1#
Una
!ti"ueta# U%icación
@A?G Dire Straits. Balda@ G?A@ Rosa Floyd. Balda Cada =la repres representa enta un ele#ento indi0idual indi0idual y cada colu#n col u#na a al aluna una pr propi opieda edad d o at atri! ri!uto uto de a4u a4uel el
ele#ento$ Recuperando el !arcode recupera a#!os el no#!re y la u!icaci%n de el ele#ento ele#ento$$ T)Es es un e&e#plo #uy sencillo. pero el principio puede ser utili(ado en dato #"s co#ple&o le&ano estructuras$ 'ara caso. cada eti4ueta podr,a tener die( o 0einte 0alores separaron separaron por co#as$
Utili(as el escaneado !arcode co#o la eti4ueta para al#acenas cada ele#ento y. !a&o a4uella eti4ueta. no#!re e y la u!ica u!icaci%n ci%n separada separa da por a#!o a# !os s el no#!r una co#a$ Entonces puedes utili(ar el te9to de In0entor de +plicaci%n parsin !lo4uea !lo4uea para iterar a tra0/s del dato 4ue utili(a un ForEac !lo4ue cu"ndo est" reresado de TinyDB $ !efer bac" to Capter Capter # fo un refreser en el ForEac blo$ blo$ue% ue%
'(r dise)o Fiura ?3@ ?3 @ espect"culos los cro4uis de diseHo para la aplicaci%n de +yudante de la Colecci%n$
NINGÚNT E
#
C
#
R S S P P LEL NE NT V EC TO C O yoROF ON Un H Un P T E R E yo G H T Un yo S T Un N T : Un B Un R C Figura -: T)e cro4uis
de diseHo de +yudante de Colecci%n
+yudante de colecci%n @$ inicios con la funcionalidad #"s !"sica$ La aplicaci%n escanea una !arra3 c%dio y al#acena el c%dio &unto con usuario3infor#aci%n introducida$ El #arco de al#acena#iento es local utili(ando TinyDB$ La @$ 0ersi%n de la aplicaci%n es la capa( de #ostrar todos los contenidos de aplicaci%n en un for#atted y e9)i!ici%n lei!le$
'(r primiti*es Uso estos !asics para construir el +yudante de Colecci%n: ❍
Un #/todo de escanear !arcodes y po!lando un te9to =eld
con los resultados de esc"ner
Ca&as de te9to para recoer el !arcodes. no#!res. y u!icaciones de ele#entos$ ❍
Botones para iniciar el !arrido. a)orro. y e9)i!ici%n de ele#entos$ ❍ Un #/todo para al#acenar atri!utos #5ltiples de un ele#ento solo ❍ Un #/todo para recuperar. parsin. y for#attin atri!utos #5ltiples de TinyDB$ ❍ Un #/todo para cleanly #ostrando todos los ele#entos en la !ase de datos ❍
$e+ Componen tes Estos usos de aplicaci%n s%lo uno co#ponente nue0o: ❍
Barcode Esc"ner
$e+ Blo"ue s +4u, es los !lo4ues nue0os utili(ar"s para construir esta aplicaci%n:
+Hade ele#ento para listar ❍ Ruptura ❍ Selecciona ele#ento de lista ❍
'(r pro,resió n Estos son los pasos to#as para construir arri!a de la @$ 0ersi%n$ Es sie#pre una una idea idea !uena de tener "spera de 4u/ orden pretendes e#prender 0uestro
pri#iti0es$ Despu/s de 4ue uno pri#iti0o est" #ane&ado. puedes #o0er enci#a al pr%9i#o un:
Co#ple9i%n la pantalla de entrada de ele#ento principal$ 1.
Co#ple9i%n la pantalla de e9)i!ici%n de la !ase de datos$ .
>ano el Esc"nerJ+Hade aconteci#iento de !ot%n del Ele#ento$ .
>ano el Sal0ar aconteci#iento de !ot%n del Ele#ento$ /.
>ano el !ot%n de Base de datosJde Ele#entos de E9)i!ici%n aconteci#iento$ .
>ano el +tr"s a aconteci#iento de !ot%n de 'antalla 'rincipal$ .
-uestro #"s duro pri#iti0o es el #/todo para parsin y for#attin el dato en el #ulti3 0ariedad di#ensional fuera de TinyDB$ Despu/s de 4ue consiues 4ue el alorit#o cla0% a!a&o. aun as,. te reutili(aci%n /l en la
A$ 0ersi%n de la aplicaci%n cu"ndo construyes funcionalidad de !5s4ueda a la aplicaci%n$
!mpe2ando encima Ayudante de Colección 1.0 Inicio
un proyecto nue0o y re!auti(arlo
Ayudante&de
la 'antalla@ propiedad de T,tulo a Colecci'n(&)$ 'one Colecci%n Assistant $ Carar el C+Kicono$pn =le 'ara la propiedad de Icono y poner las propiedades de Icono con el
icono =le de el proyecto =les descaraste de el sitio de e! del co#paHero de este li!ro$ 6-e la introducci%n de este li!ro si necesitas instrucciones para descarar el proyecto =les$7 Necesitas construir arri!a de la interfa( de usuario para aceptar a#!as entrada de el Barcode Esc"ner co#3 ponent y el usuario antes de 4ue est"
sal0ado a la !ase de datos$ -uestra interfa( de usuario utili(a dos -ertical+rrane#ents co#o -irtualScreens$ -irtualScreen@ est" utili(ado para la pantalla de entrada de dato principal$ -irtualScreenA est" utili(ado para la pantalla de e9)i!ici%n de la !ase de datos: 1.
Sitio dos -ertical+rrane#ents al Espectador$
Re!auti(ar el -ertical+rrane#ents -irtualScreenA $ .
*irtual+creen(
y
'one el Anco y propiedades de +ltura para a#!os -irtualScreens para ,lenar -adre$ .
Necesitas crear -irtualScreen@ con un rande. !ot%n 0isto f"cil#ente para escanear un !arcode en la parte superior de
la pantalla principal$ =elds$
Tena 4ue ser
seuido por tres te9to
El =rst te9to =eld est" po!lado por el dato de rereso de
un el
e9itoso Barcode esc"ner de Esc"ner$ 'or4ue no 4uieres c%dio para ser accidently !unled arri!a por el usuario
despu/s de 4ue est" escaneado. deselect la propiedad Ma!ilitada en el te9to =eld$ El Barcode el esc"ner toda0,a puede po!lar la ca&a de te9to y t5 toda0,a pueden utili(ar los contenidos de la ca&a de te9to prora##atically$ El usuario no. aun as,. ser capa( a #anual#ente po!lar la ca&a de te9to$ 'uedes e&ercer esta clase de controlar enci#a ca&as de te9to cu"ndo son prora##atically po!l%$ Ta#!i/n podr,as utili(ar este func3 tionality cu"ndo una ca&a de te9to est" po!lada a ra,( de un c"lculo )ec)o en los n5#eros o el te9to introducidos en otro te9to =elds$
El seundo y terceras ca&as de te9to est"n )a!ilitadas y aceptar entrada de el usuario para especi=car el no#!re y la
u!icaci%n de un o!&eto escaneado: 1.
+rrastrar un !ot%n al Espectador y ota /l a el
.
Re!auti(ar el !ot%n btnAdd.tem en la colu#na de
-irtualScreen@$ Co#ponentes$
propiedad a A $
.
Ca#!io el
/.
Ca#!io la propiedad de Te9to para
A/adir $
Font+ize
Escanear Elemento para
Lueo es la ca&a de te9to 4ue est" po!lado cu"ndo el !arcode est" escaneado$ Inutili(as la ca&a de te9to as, 4ue el usuario no puede alterar el n5#ero despu/s de 4ue )a sido escaneado: 1.
+rrastrar un Te9tBo9 co#ponente y caerlo a!a&o el
.
Re!auti(ar el Te9tBo9 co#ponente
.
Unc)ec La propiedad Ma!ilitada$
/.
'one
.
'one la propiedad de +nc)o para ,lenar -adre$
!ot%n de Ele#ento del Esc"ner$
la propiedad
de 'ista para
t0tBarCode$
Escanear Barcode$
El pr%9i#o dos ca&as de te9to son donde el usuario introduce el no#!re y u!icaci%n de la !arra escaneada3 c%dio$ Si el ele#ento es un collecti!le Guerras de Estrella =urine o un D-D. el no#!re y necesidad de u!icaci%n para ser al#acenado
en una #anera sini=cati0a$ Utili(as la propiedad de 'ista para indicar lo 4ue infor#a3 tion el usuario tendr,a 4ue introducir #"s 4ue eti4uetar las ca&as de te9to: +rrastra y ota dos Te9tBo9 co#ponentes !a&o el t9tBarCode co#ponente$ 1.
Re!auti(ar el =rst ca&a de te9to t0t1ame y poner su propiedad de 'ista a No#!re de Elemento$ .
Re!auti(ar la seunda ca&a de te9to propiedad de 'ista a U!icaci%n de Elemento$ .
/.
t0t,oc
y poner su
Set tanto la propiedad de +nc)o para ,lenar
a#!as ca&as de te9to$
-adre
para
Lueo. sitio el !ot%n para sal0ar a#!os el c%dio escaneado y los ele#entos de te9to introducidos a TinyDB : 1.
+rrastra y caer
un !ot%n !a&o la 5lti#a ca&a de te9to$
.
Re!auti(ar el !ot%n btn+ave$
.
'one
la propiedad a Base de datos$
de Te9to de el !ot%n para
+alvar Elemento
El !ot%n de Ele#entos de la E9)i!ici%n de&a 0uestro usuario puede 0er 4ue un ele#ento escaneado )a
sido colocado en TinyDB$ Es ta#!i/n el aconteci#iento 4ue los #anos 4ue estiran los ele#entos fuera de TinyDB y parsin les al -irtualScreenA: un !ot%n !a&o el !ntSa0e !ot%n$
1.
+rrastra y caer
.
Re!auti(ar el !ot%n btnDisplay$
.
'one
la propiedad
de Te9to de el !ot%n para
ostrar Elementos$
+4uellos son todos de los ele#entos de interfa( del usuario para -irtualScreen@$ -irtualScreenA est" co#puesto pri3 #arily de una eti4ueta para #ostrar !ot%n para reresar el TinyDB ele#entos y un usuario a el principal -irtualScreen@$ La eti4ueta con te9to
colocas al -irtualScreenA est" po!lado descripti0o$ Esto es en colocar
principal#ente tan place)older te9to para trou!les)ootin$ Si el te9to es sin ca#!ios cu"ndo intentas para #ostrar TinyDB ele#entos. sa!es para co#pro!ar los !lo4ues de actuali(aci%n de la eti4ueta$
un co#ponente de Eti4ueta a
1.
+rrastra y caer
.
Re!auti(ar el co#ponente de Eti4ueta
.
'one
-irtualScreenA$$ la propiedad
de Te9to a DB
lblDBDisplay$
E0ibici'n$
El =nal ele#ento de interfa( del usuario es el !ot%n para reresar el usuario a la pantalla principal a con3 tinue introduciendo ele#entos despu/s de #ostrar ele#entos$ En la A$ 0ersi%n. tendr"s un !ot%n si#ilar para reresar de la pantalla de !5s4ueda del ele#ento$ 'laneando adelante puede #antener t5 de teniendo 4ue re!auti(ar co#ponentes: 1.
+rrastra y caer
un !ot%n !a&o el l!lDBDisplay eti4ueta$
Re!auti(ar el co#ponente de Bot%n btnDisplayBac" $ 'one propiedad de Te9to para !espaldar $ .
la
Lueo aHades el dos co#ponentes no 0isi!les: +yudante de Colecci%n utili(a el Barcode
Esc"ner y el TinyDB co#ponentes$
+rrastra y caer el Barcode co#ponente de Esc"ner de el Otro Stu* paleta$ .
+rrastra y caer el TinyDB co#ponente de la paleta B"sica a la 0ista de DiseHo$ Recuerda: es un co#ponente no 0isi!le y aparece s%lo !a&o la /.
0ista de DiseHo$
+4uello es para la interfa( de usuario de +yudante de Colecci%n @$$ -uestra interfa( de usuario tendr,a 4ue parecer$ Fiura ?3A$
Figura -:
El +yudant e de Colecci% n
co#plet ado @$ interfa( de usuario
Seleccionar el -irtualScreenA co#ponente y deselect co#ponente -isi!le$ El -irtualScreenA desaparece de
su
el puedes rec)ec el
Espectador$ 'ara )acer a&usta#ientos. co#ponente 0isi!le para )acerlo 0isi!le en el Espectador otra
0e($
Inicio con el Editor de Blo4ues por #ane&ar el Ele#ento de Esc"ner para +Hadir el !ot%n no#!r% btnAdd.tem$ El !tn+ddIte# lla#a el Barcode el esc"ner construido3en #/todo 4ue inicios el arri!a de el construidos3en Barcode Esc"ner$ Cu"ndo usuario escanea un !arcode. un aconteci#iento est" enerado a4uello contiene el resultado de el esc"ner$ Cu"ndo est"s
construyendo aconteci#iento3aplicaciones conducidas. ayuda para seuir la estela de aconteci#iento y co#ple9i%n arri!a de los aconteci#ientos cuando ocurrir,an $ Lla#ada el esc"ner de el btnAdd.tem aconteci#iento )an3 dler y entonces construir el Barcode+canner
escanear:$ 1.
aconteci#iento 4ue
est" enerado despu/s de
Type!loc El btnAdd.tem%Acontecimiento de clic )andler$
Type!loc El Barcode+canner(%Do+can Lla#ada de #/todo y c)as4uear /l a el aconteci#iento )andler$ .
El %Do+can Lla#ada de #/todo contiene todo del c%dio e instrucciones para 0uestro aconteci#iento$ Lan(a el !arcode esc"ner y esperas para un !arcode para pasar delante de el c"#ara del tel/fono$ Cu"ndo un
El esc"ner e9itoso est" reconocido. el 0alor 4ue est" escaneado est" pasado atr"s al Barcode+canner(%After+can +conteci#iento )andler$ El resultado de el esc"ner est" pasado a el aconteci#iento )andler co#o un aru#ento resultado nombrado$ +4uel aru#ento puede ser re!auti(ado por re!auti(ar el blo$ue de no#!re en el cas$uete de resultado en el aconteci#iento )andler$ + pesar de 4ue no nor#al#ente ca#!ias el no#!re de el blo$ue de nombre del resultado. a 0eces necesitas
)acer tan si In0entor de +plicaci%n no auto#"tica#ente crea el !lo4ue 4ue es plued a el cas$uete de resultado$
una lista cla0e $'or4ue de escane% c%dios$ Esta lista es la lista al#acenas todo de la infor#aci%n 4ue utili(a el !arcode co#o la eti4ueta. esta lista es i#portante para recuperar todos los Cu"ndo el aconteci#iento ocurre. aHades el resultado a
datos introdu&eron a la !ase de datos$ Ta#!i/n necesitas recordar para carar esta lista con la -antalla(%.ntialize +conteci#iento$ Despu/s de cada esc"ner. sal0as la lista entera a TinyDB $ +4uella #anera. puedes recuperar todo de la !arra3 c%dios 4ue )a sido escaneado$ Entonces puedes utili(ar el !arcodes co#o eti4uetas para recuperar dato de TinyDB $
T5 ta#!i/n puesto el te9to de el discapacitado 6no in0isi!le7 t9tBarcode ca&a de te9to a el resultado de el esc"ner$ 'ri#ero. crear la lista 0aria!le para ser utili(ada para al#acenar el !arcodes: 1.
Type!loc Un 0aria!le y re!auti(arlo varBarcodelist $
.
Type!loc Una marca
barBarcode,ist
!lo4ue$
un blo$ue
de lista y c)as4uear /l a
Esto es un valid blo$ue se$uence even con la marca un blo$ue de lista empty% Este reminds you durante t roubletiroteo o cl earin3 el variable $ue este variable es unli st%
Lueo. el inicio 4ue construye el %After+can +conteci#iento )andler para al#acenar el c%dio escaneado en el 0aria!le y la 0aria!le en TinyDB !a&o una pala!ra cla0e sola:
Type!loc El Barcode+canner(%After+can +conteci#iento )andler$ +0iso el prepopu3 lated cas$uete de resultado$ Un !lo4ue de valor aco#paHante est" creado y colocado en el >i
1.
De=nitions ca&%n$ Elementos para ,istar !lo4ue y el %After+can +conteci#iento Elementos para ,istar el !lo4ue te
Type!loc El Undd c)as4uear /l a
.
)andler$ El Undd de&as para aHadir ele#entos #5ltiples a
un 0ari3
el
lista capa( especi =cas$ .
Type!loc El varBarcode ,ist
!lo4ue 0aria!le lo!al y c)as4ue ar /l a la lista
Cas4uete en
el a/adir elementos para listar
!lo4ue$
NINGÚNT E
Type!loc t)e result 0alue Blo4ue und snap it into t)e =rst item socet on t)e a/ade elementos to list !lo4ue$ Recuerda. t)e result !lo4ue 2as cread in t5r >y De=nitions dra2er 2)en you usod t)e %After+can +conteci#iento$ 1ou can c)ane t)e na#e result + 2)ate0e r you lie !y c)anin t)e name !lo4ue on t)e %After+can Inclusot )andler$ . Type!loc El t0tBarcode%4e0to 5a6 !lo4ue y c)as4uear /l en el $After+can +conteci#iento !a&o /.
el a/adir elementos para listar !lo4ue$ Type!loc Otro /l a blo$ue de 0alor del resultado y c)as4uear el $t0tBarcode%Blo$ue de te9to$ Esto pone el resultado de esc"ner a el 4e0tbo0 cu"ndo el esc"ner co#pleta$
Esto da 0uestro usuario retroali#entaci%n 0isual en el esc"ner$ .
Type!loc El 4inyDB(%+tore*alue Blo4ue y c)as4uear
/l en pr%9i#o$ 3.
Uso un blo$ue de te9to para poner
eti4ueta a !arcodelist $
el cas$uete
Type!loc El varBarCode,ist 0aria!le lo!al y c)as4uear /l a el value4o+tore 8.
Cas4uete$
El co#pletado btnAdd.tem%Acontecimiento de clic y el Barcode+canner(%Despu7s de $ue
escáner
El aconteci#iento tendr,a 4ue parecer Fiura ?3$ Figura -:
T)e
!tn+ddI te#$ Clic y Barcode Esc"ner @$
+fterSc an +contec i#iento s
de
+l llear a este punto.
tienes
un 0aria!le a4uello el !arcodes a4uello nunca )a sido
contiene todo escaneado y almacenado en TinyDB !a&o la eti4ueta Mas al#acenado el !arcodes en TinyDB de barcodelist$ #odo 4ue puedes carar el preload la 0aria!le con todo el esc"ner anterior dato cu"ndo el applica3 tion
est" e#pe(ado$ La lista de !arcodes es 0uestro cla0e a estirar el dato al#acenado en TinyDB$ 'or4ue
al#acenaste dato con el !arcodes co#o eti4uetas. el !arcodes es 0uestra lista de eti4uetas$ 'odr,as utili(ar
la lista en una lista picer o para estirar el dato fuera de la !ase de datos prora##atically$ En este appli3 cati%n. utili(as la lista de !arcodes co#o #anera de iterar a tra0/s de todos los ele#entos al#acen% en TinyDB$ Cada !arcode est" sacado de la lista y utili(ado co#o eti4ueta para estirar la infor#aci%n al#acenada en el TinyDB co#ponente con a4uel !arcode$
Despu/s de
un !arcode )a sido escaneado y un no#!re de ele#ento y la u!icaci%n )a sido introducidos por 0uestro usuario. necesitas sal0ar el introducido
info en TinyDB con el !arcode co#o la eti4ueta$ Utili(as el Sal0ar Ele#ento a !ot%n de Base de datos co#o el aconteci#iento para sal0ar a la !ase de datos$ Utili(as un poco truco cu"ndo al#acenas el dato de #odo 4ue pueda ser recuperado y parsed con un ForEac !lo4ue$ El no#!re y el dato de u!icaci%n est" al#acenado !a&o el !arcode. separado por co#as$ Cu"ndo recuperas el dato. utili(as la co#a co#o punto partido$ Esto es apro9i#ada#ente e4ui0alente a un #ultidi#en3 sional 0ariedad en lenua&es de prora#aci%n tradicionales$$ 1.
Type!loc El btn+ave%Acontecimiento de clic )andler y arrastrarlo a
un claro 2orspace$
Type!loc El 4inyDB(%+tore*alue Blo4ue y c)as4uear /l a el aconteci#iento )andler$ .
Type!loc El Barcode+canner(%Blo$ue de resultado$ Ser prudente no para confundir /l con el resultado
.
el 0alor local !lo4uea a4uello es en 0uestro >i De=nitions ca&%n$ +4uello !lo4uea tra!a&os 5nicos
dentro del conte9to de el Barcode+canner(%After+can +conteci#iento cuando es un 0alor de par"#etro local $ El Barcode+canner(%Blo$ue de resultado tiene los #is#os contenidos pero est" locali(ado en el BarcodeScanner@ ca&%n$ C)as4uear este !lo4ue a el cas$uete de eti4ueta en el 4inyDB(%+tore*alue Blo4ue$
de te0to de la #arca y blo$ue el el value4o+tore cas4uete en c)as4uear /l a 4inyDB(%+tore*alue Blo4ue$ Utili(as el blo$ue de te0to de la
/.
Type!loc Un
#arca para unir el no#!re y te9to de u!icaci%n =elds. separado por una co#a$
Type!loc El t0t1ame%Blo$ue de te9to y c)as4uear /l a el cas$uete de te9to en el blo$ue de te0to de la
.
#arca$
Type!loc Un blo$ue de te9to y ree#pla(ar el default te9to con una co#a$ C)as4uear el !lo4ue de co#a en el cas$uete de te9to !a&o el t0t1ame%Blo$ue de te9to$
.
3.
Type!loc El
de te0to
pr%9i#o$
t0t,oc%Blo$ue
de te9to y c)as4uear /l a el
cas$uete
Un escaneado !arcode de @A?G. un no#!re de Bo!a Fett acci%n =ure.< y una u!icaci%n de ar#ario de Sala< est" al#acenada tan #ostrada en >esa ?3A$
Mes
$om%re&
!ti"u
Valor
@A
Bo!a Fett +cci%n =ure.
'uedes al#acenar tan #uc)os 0alora tan te usta !a&o la eti4ueta separada por co#as$ >"s tarde en
este cap,tulo. te #uestras c%#o para separar el dato en los 0alores$ Ta#!i/n puedes utili(ar cual4uier deli#itador te usta. pero una co#a es nor#al#ente !astante f"cil de utili(ar y 0er$$
Despu/s de 4ue )as al#acenado el ele#ento puedes escaneado con su no#!re y u!icaci%n. aclarar todas las ca&as de te9to en -irtualScreen@ por poner su %-ropiedad de te9to a un !lo4ue de te0to del
espacio$
Type!loc El t0tBarCode%4e0to c)as4uear /l en !a&o el 4inyDB(% +tore*alue Blo4ue$ 1.
.
Type!loc El /l en pr%9i#o$
t0t,oc%4e0to 5a 6
Type!loc El /l en pr%9i#o$
t0t1ame%4e0to 5a6
.
/.
5a6
!lo4ue y
!lo4ue y c)as4uear !lo4ue y c)as4uear
Sitio un !lo4ue de te0to 0ac,o en cada de los
blo$ues
de te9to$
-uestro btn+ave%Acontecimiento de clic )andler tendr,a 4ue parecer el en Fiura ?3$ T)e Escane% el c%dio y las ca&as de te9to est"n al#acenados en TinyDB y las ca&as de te9to est"n aclaradas para el esc"ner pr%9i#o$ Figura -:
El co#pleta do
!tnSa0e$ +conteci #iento de clic )andler
El aconteci#iento pr%9i#o necesitas al #ano es el usuario tocando el !ot%n de Ele#entos de la E9)i!ici%n en -irtualScreen@$ Estas #arcas de !ot%n
-irtualScreenA 0isi!les. cara todo el !arcodes de TinyDB . y entonces parses el #ulti30ariedad di#ensional fuera a sus 0alores separados y para3$ Esteras /l para e9)i!ici%n$ 81uestro al3oritm fo l oadin eac bunrcoda y entonces formattin el dato stored con el barcla oda es un poco comple0% Despu7s de $ue you understy el process9 you cun reuse esta l'ica f o multidimensional arrunys of ynuestro o;n%
'ri#ero
caras el
a un
!lo4ue$ construyes la l%ica siuiente: 'ara cada
Entonces !arcode en
varBarcode,ist
ForEac
partido el 0alor al#acenado !a&o el !arcode a una 0aria!le lla#% tmp,ist$< El blo$ue de ruptura di0ide cual4uier cuerda de lista en el car"cter escoes$ Tan. te9to a una partiste el nombre9cuerda de u!icaci%n al#acenada con el !arcode a una lista pro0isional$ Entonces puedes utili(ar un nested ForEac !lo4ue a for#ato el tmp,ist a un for#atted pie(a de te9to para #ostrar$ Creas el for#atted te9to de el tmp,ist por seleccionar3 in el =rst ele#ento en el tmp,ist y escri!i/ndolo a una 0aria!le pro0isional. y entonces seleccionando el ele#ento pr%9i#o y uniendo /l con el ele#ento anterior con for#attin co#o ne2lines$ Final#ente. escri!es el !arcode y for#atted te9to a un pro0isional for#atted 0aria!le para auantar #ientras 0as en a el pr%9i#o !arcode al#acen% en el varBarcode,ist$ el
varBarcode,ist.
Este proceso entero suena confundir y con0oluted. puedes entender /l por s/$ Es co#ple&o. pero ippin adelante para Representar ?3 y leyendo tra0/s de los !lo4ues en sencillos inleses$ 'ara
cada ele#ento el siuiente: varBarCode.
Set tmp,ist a un sencillo lista de dos ele#entos 6utili(ando ruptura7 de los contenidos de TinyDB$ Utili(ando el !arcode carado a 0ar por el ForEac !lo4ue$
Set tmpvar( a el ele#ento en ,ndice ( en tmp,ist$ Esto es el valor de No#!re al#acenado !a&o el
.
!arcode$
.
S e t t m p v a r 2
a e l
a
en
1.
s i u i e n t e
for#atted te9to: No#!re de Ele#ento: Pn 6ne2line Car"cter7 No#!re
Pn
REMEMBE
+)ora puesto tmpvar( a el ele#ento en ,ndice 2 en al#acenado !a&o el tmp,ist$ Esto es la u!icaci%n !arcode$
/.
.
Unir los contenidos de t#p0arA con el
siuientes for#atted te9to atr"s a t#p0arA :
No#!re de U!icaci%n: Pn U!icaci%n 6en t#p0ar@7
Pn QQQQQQQQQQQQQQQQQ 6separator Caracteres entre entradas7
Pn Une en tmpvar3 los contenidos de t#p0ar y t#p0arA $ .
-uel0e )asta arri!a !arcode$ 3.
y /l otra 0e( para cada
Final#ente puesto el lblDBDisplay%4e0to a los contenidos de t#p0ar . el cual es todo el
8.
for#atted el te9to creado por cada pase a tra0/s del nested ForEac !lo4ues$
Cuando construyes arri!a de con&unto de !lo4ues. re=ere Representar ?3 para uia&e$
cada para
'ri#ero. crear todas las 0aria!les pro0isionales y la lista pro0isional 4ue te utili(ar" a tra0/s del$ btnDisplay%Acontecimiento
de clic )andler: 1.
De=ne Una 0aria!le no#!r%
una arca
un blo$ue
de Lista$
tmp,ist$
C)as4uea en
De=ne Una 0aria!le no#!r% tmpvar($ C)as4uea en un !lo4ue de te0to 0ac,o$ .
De=ne Un no#!re 0aria!le tmpvar2$ C)as4uea en un !lo4ue de te0to 0ac,o$ .
De=ne Una 0aria!le no#!r% tmpvar3$ C)as4uea en un !lo4ue de te0to 0ac,o$ /.
El var y 0ar@ !lo4ues de 0alor son de=ned cu"ndo creas el ForEac !lo4ues$ El var !lo4ues de 0alor aparecen en el >i De=nitions ca&%n$ 'ueden ser type!loced por4ue
aparecen en la parte superior de type!loc el te9to var $
la lista cu"ndo t5
Type!loc El btnDisplay%Acontecimiento de clic )andler y colocarlo enci#a un claro 2orspace en el Editor de Blo4ues$ El btnDisplay%Acontecimiento de clic es !astante #uc)o tie#po cu"ndo eres =nis)ed con /l. as, 4ue #arca seuro tienes )a!itaci%n para /l$
Figura -: T)e co#plet%
!tnDispla y$+conteci #iento de clic )andler
El =rst cosa 4ue pasa cu"ndo el usuario toca el !ot%n de E9)i!ici%n es 4ue -irtualScreenA est" )ec)o 0isi!le y -irtualScreen@ est" )ec)o in0isi!le: Type!loc t)e !lo4ue in lo$ 1.
*irtual+creen(%*isible 5A 6
!lo4ue und snap un false
Type!loc El *irtual+creen2%*isible 5a6 !lo4ue y c)as4uear un blo$ue cierto en /l$ .
.
Type!loc El tmp*ar3 5a6 !lo4ue y c)as4uear /l en !a&o el
-irtualScreen !lo4ues$ C)as4uea en un !lo4ue de 4e0to del espacio$ Esto aclara el pro0isional for#attin 0aria!le as, 4ue pueda ser" fresco y reluciente para cada prensa de el !ot%n de E9)i!ici%n$ Lueo. el inicio 4ue construye la l%ica para #ostrados en Fiura ?3$
el ForEac
los !lo4ues
1.
Type!loc Un ForEac !lo4ue y c)as4uear /l en el
aconteci#iento )andler$
!emember
en el ForEac blo$ue% +i el var soc"et es unpopulated9 you necesidad to cas$uea en un blo$ue de nombre from el D e=nitions drun; er y r ename 7l t o el n e0t se$uential var n>mero?de nombre combination%
NINGÚNT
Type!loc El varBarcode,ist !lo4ue de 0alor y c)as4uear /l a el en cas$uete de lista en el fondo de el ForEac !lo4ue$ . Type!loc El tmp,ist 5a6 y c)as4uear /l a el ForEac .
!lo4ue$ /.
Type!loc Un blo$ue de ruptura y c)as4uear /l a
el tmp,ist .
!lo4ue$
Type!loc Un 4inyDB(%@et*alue Blo4ue y c)as4uear
/l a
el cas$uete tmp,ist Blo4ue$
de te9to en el
Type!loc El var !lo4ue y c)as4uear /l a el %@et*alue Blo4ue$ T)Es utili(a el !arcode actual#ente carado de el TinyDB co#o la eti4ueta para el %@et*alue Blo4ue$
.
Type!loc Un blo$ue de te9to y ree#pla(ar el te9to con una co#a$ C)as4uear el !lo4ue de co#a a el en cas4uete en el blo$ue de ruptura$
3.
Esta serie de !lo4ues cara los contenidos al#acenaron !a&o el actual#ente carados !arcode y rupturas /l en la co#a$ El
4ue 0ueltas de ruptura es un !lo4ue #uy #ane&a!le cual4uier cuerda de te9to a una lista de ele#entos di0idi% en el car"cter 4ue c)as4ueas a el en cas4uete$ 'uedes utili(ar el blo$ue de ruptura a te#poral#ente irar una l,nea de te9to a una lista as, 4ue puedes tratar cada pala!ra en la l,nea de te9to por su n5#ero de ,ndice en la lista$ Recuerda 4ue las listas en In0entora de +plicaci%n tienen un ,ndice nu#3 !er a4uello es iual a su sitio en la lista$ blo$ue
Lueo construyes el ForEac !lo4ue 4ue procesos el tmp,ist 0aria!le de lista a for#atted te9to para e9)i!ici%n$ Nested ForEac Los !lo4ues pueden ser confundir: >antiene en i#portar 4ue el e9terior ForEac el !lo4ue cara una lista pro0isional y el interior ForEac el !lo4ue procesa 4ue te#po3 rary lista$ El e9terior ForEac cara otra lista pro0isional para )acerlo todo otra
0e(:
1.
Type!loc Un seundo ForEac !lo4ue y c)as4uearlo de!a&o
el tmp,ist 5a6
!lo4ue$
Type!loc El tmp,ist !lo4ue de 0alor lo!al y c)as4uear el en cas$uete de lista en el fondo de /l en el ForEac .
!lo4ue$ Esto es el interior ForEac !lo4ue 4ue procesos los ele#entos en Utili(as las 0aria!les pro0isionales para el tmp,ist 0aria!le$
seleccionar los ele#entos fuera de la lista pro0isional y for#ato el =nal te9to de e9)i!ici%n$ Esta l%ica podr,a ser
)ec)a #"s estanco y #"s raceful por utili(ar el seleccionar el seundo con&unto de !lo4ues y no elemento de lista en utili(ando tmpvar($ +un as,. sea un poco #"s duro de entender
4u/ est"s )aciendo$ Despu/s de construir esta serie y consiui/ndolo para tra!a&ar en 0uestro tel/fono. puedes 4uerer 0ol0er e intentar pensar a tra0/s de c%#o o!&eti0o podr,a ser cu#plido con #enos !lo4ues$
el #is#o
El seleccionar blo$ue de elemento de la lista te de&as para estirar un ele#ento solo fuera de una lista por su ,ndice
nu#3 !er$ Sa!es 4ue el tmp,ist tiene el for#ato de no#!re. u!icaci%n. as, 4ue sacas el =rst ele#ento de ,ndice y sitio /l en tmpvar(: Type!loc El tmpvar( 5a6 !lo4ue y c)as4uear /l en el interior ForEac !lo4ue$ 1.
Type!loc El +eleccionar blo$ue c)as4uear /l a el a cas$uete en el .
tmpvar(
de Elemento
de la Lista y
!lo4ue$
Type!loc El tmp,ist !lo4ue de 0alor lo!al y c)as4uear /l a el cas$uete de lista en el +elecciona blo$ue de Elemento de la Lista$ .
/.
Type!loc Un n5#ero ( !lo4ue y c)as4uear /l a
el cas$uete
,ndice$
de
+)ora utili(as tmpvar2 co#o sitio de )oldin pro0isional a for#ato el te9to alrededor de el 1ombre 4ue te colocado en tmpvar( $ El unir o !lo4ues de te0to de la #arca podr,an utili(ados para esta tarea$ 'ara para3 #attin ser te9to. es un poco #"s f"cil a en0ision lo 4ue el =nis)ed el resultado parecer" cu"ndo utili(as los blo$ues de te0to
de la #arca:
Type!loc El tmpvar2 5a6 !lo4ue y c)as4uear /l en !a&o el tmpvar( !lo4ue$ 1.
.
Type!loc El blo$ue
tmpvar2
de te0to
de la #arca y c)as4uear /l a el
!lo4ue$
Type!loc Un blo$ue de te9to con el No#!re de Elemento del te0to: y c)as4uear /l en el cas$uete de te9to$ Ser seuro para de&ar un espacio =nal$
.
/.
Type!loc Un blo$ue de te9to con el ne2line car"cter 6n7 y
c)as4uear /l a el Cas4uete$ .
te0to pr'0imo
Type!loc El tmpvar( !lo4ue de 0alor y c)as4uear /l en el
cas$uete de te0to
pr%9i#o$
Type!loc Un blo$ue de te9to con el ne2line car"cter y c)as4uear /l en 5lti#o$ .
+)ora
te
reutili(aci%n
ele#ento pr%9i#o en
tmpvar( para e9traer el tmp,ist para for#attin:
el
el
Type!loc El tmpvar( 5a6 !lo4ue y c)as4uear /l en !a&o el tmpvar for#attin !lo4ues$
1.
.
Type!loc El
c)as4uear /l a
seleccionar blo$ue de elemento el tmpvar( !lo4ue$
de la lista y
Type!loc El tmp,ist !lo4ue de 0alor y c)as4uear /l a el cas$uete de lista en el seleccionar blo$ue de elemento de la lista$ /. Type!loc Un n5#ero 2 !lo4ue y c)as4uear /l a el cas$uete de ,ndice$ .
Lueo. unir los contenidos actuales de t#p0arA con nue0os for#atted el te9to construido alrededor de el con3 tiendas de t#p0ar@ $ Utili(ando un unir !lo4ue para unir los contenidos de una 0aria!le con te9to nue0o y colocarlo atr"s en la #is#a 0aria!le es #uc)o usta utili(ar la adici%n 67 !lo4ue a incre#ent un 0alor nu#/rico en una 0aria!le$ To#as 4u/ es en la 0aria!le. aHade alo a /l. y entonces colocarlo atr"s en la 0aria!le$ Type!loc El tmpvar2 5a6 !lo4ue y c)as4uear /l en pr%9i#o en el interior ForEac !lo4ue$ 1.
.
Type!loc Un unir !lo4ue$
.
Type!loc El tmpvar2 valor
lobal
=rst cas4uete en el Une !lo4ue$ /.
!lo4ue y c)as4uear /l a el
Type!loc Un blo$ue de te0to de la #arca y c)as4uear /l a
!lo4ue$ el te9to a No#!re . Type!loc Un blo$ue de te9to y poner de Ubicaci'n: con un espacio =nal$ C)as4uea /l a el cas$uete de te9to en el blo$ue de te0to de la #arca$ . Type!loc Un blo$ue de te9to y poner el te9to a un ne2line car"cter$ C)as4uea /l a el pr%9i#o Cas$uete de te9to$ el seundo cas4uete en
el unir
REMEMBER El n e;line caracter fo Aplicaci'n yonvent o t e0t es el n combination%
3.
c)as4uear El tmpvar( a)ora t#pList $ 8.
lobal !lo4ue y /l al cas$uete de te0to pr%9i#o$ contiene el valor de U!icaci%n de
Type!loc El tmpvar( valor
Type!loc Un blo$ue de te9to con un ne2line
car"cter y c)as4uear /l en el pr%9i#o$
cas$uete de te0to
Type!loc Un blo$ue de te9to con al5n separator te9to co#o y c)as4uear /l en
4.
el
cas$uete de te0to
10.
pr%9i#o$
un ne2line el 5lti#o !lo4ue en el
Type!loc Un blo$ue de te9to con
car"cter y c)as4uear /l en Blo$ue de te0to
de la #arca$
-uestra serie de !lo4ue pr%9i#a est" colocada en el e9terior ForEac !lo4ue !a&o el interior ForEac 60e Fiura ?3
7$ Necesitas to#ar el for#atted te9to 4ue contiene la !arra escaneada y al#acenada3 c%dio. no#!re. y u!icaci%n con su for#attin y tienda /l en tmpvar3.
donde
est" unido cada 0e(
con el anterior#ente for#atted ele#entos )asta 4ue todo el escaneados !arcodes )a sido para3 #atted y est" a punto para ser #ostrado
Type!loc El tmpvar3 5a6 !lo4ue y c)as4uear /l en !a&o el interior ForEac !lo4ue$ 1.
.
Type!loc Un
unir
!lo4ue y c)as4uear /l a el tmpvar3 !lo4ue$
Type!loc El tmpvar3 0alor lo!al !lo4ue y c)as4uear /l a el =rst cas4uete en el Une !lo4ue$ .
/.
Type!loc El tmpvar2 0alor lo!al !lo4ue y c)as4uear
seundo cas4uete en el Une !lo4ue$
/l a el
La 5lti#a cosa 4ue pasa en el btnDisplay%Acontecimiento de clic )andler es la e9)i!ici%n de todo el for#atted ele#entos en el tmpvar3 0aria!le en el l!lDBDisplay eti4ueta en -irtualScreenA: 1.
Type!loc El
btnDisplay% Clic !a&o .
lblDBDisplay%4e0to
5a6
!lo4ue y c)as4uear /l en el
el nested ForEac !lo4ues$
Type!loc El tmpvar3 0alor lo!al !lo4ue y c)as4uear /l a el
blo$ue
de te9to$
-uestro btnDisplay%Acontecimiento de clic )andler a)ora tendr,a 4ue parecer Fiura ?3$ Cara el con3 tiendas de el varBarcode,ist y e#pie(a utili(ar el !arcodes co#o eti4uetas para po!lar un te#po3 rary lista 4ue es entonces utili(ado a ele#entos de for#ato para e9)i!ici%n$ Entonces pue!la la eti4ueta de e9)i!ici%n de !ase de datos rande en -irtualScreenA$ Despu/s de 0uestro usuario )a perused los ele#entos #ostraron en la eti4ueta. necesitas #ane&ar el 'osterior pero3 tonelada de el -irtualScreenA$ 1.
Type!loc El btnDisplayBac"%Acontecimiento de clic )andler$
.
Type!loc Un
blo$ue .
falso$
Type!loc Un
blo$ue
cierto$
*irtual+creen2%*isible 5a6
!lo4ue y c)as4uear en un
*irtual+creen(%*isible 5a6
!lo4ue y c)as4uear en un
El aconteci#iento 5nico de&% al #ano es la 'antalla @$Intiali(e +conteci#iento 4ue ocurre en inicio de aplicaci%n3arri!a$ Necesitas carar el !arcodes al#acen% en TinyDB a el varBarcode,ist 0ari3 capa($ +un as,. si es el =rst la carrera o el usuario )a aclarado el dato de el +ndroide applica3 tion encuadres. necesitas )acer seuro no cargas un null 0alor a la
lista$ Si caras un null 0alor a la lista. los errores errores de aplicaci%n fuera de cual4uier tie#po 0uestros 0uestros intentos de aplicaci%n para 0aria!le e co#o utili(a uti li(arr la 0aria!l lista$ El =rst tie#po los intentos de una !arra !arra esc escane aneada3 ada3 c%dio. la usuario para aHadir alo con aplicaci%n c)ocar,a $ Esto es un resultado resultado de el blo$ue de lista de estructura ra de una 0aria!l 0aria!le$ e$ la #arca #arca de )ec )ec)o )o ca# ca#!ian !iando do la estructu Escri!iendo un null el 0alor a la 0aria!le saca su esencial listy3 ness$< 'or4ue 'or4ue usos de In0entor de la +plicaci%n s%lo una clase sola< de 0aria 0aria!le. !le. la 0aria 0aria!le !le to#a su tipo o clas clase< e< de el sencill llo o +i dato actual# actual#ente ente al#ac al#acenado enado en /l$ Utili( Utili(as as un senci !lo4ue para 0er si cual4uier dato
Est" al#acenado en TinyDB$ Si el TinyDB TinyDB es 0ac,o. no caras cual4uier cosa a la 0aria!le. e0itar3 e0itar3 in el null 0alor$ Si TinyDB de )ec)o tiene dato de usuario al#acen al#acenado ado en /l. sea carado a la 0aria!le$ Type!loc Type! loc La La 'anta 'antalla@$ lla@$Inicia Iniciali(a li(a acont aconteci# eci#iento iento )andler$ 1.
.
Type!loc Un +i !lo4ue y c)as4uear /l a el
%.nicializa .
aconteci#iento$
!lo4uear y c)as4uear /l a de prue!a en el +i !lo4ue$
Type!loc Un
cas$uete
no
el
Type!loc Type!loc Un e4uals e4uals operador operador de de co#paraci%n co#paraci%n 6Q7 6Q7 y c)as4uear /l a el no !lo4uear$ /.
.
Type!loc Un 4inyDB(%@et*alue Blo4ue y c)as4uear
/l a
el =rst cas4uete en el co#3 parison operador$ . Type!loc Un blo$ue de te9to y ca#!iar el te9to a !arcodelist y c)as4uear /l al$ 4inyDB(%@et*alue Blo4ue$
Type!loc Un blo$ue de te9to y sacar el default te9to. de&ando un !lo4ue de te0to del espacio$ C)as4uea /l a el 3.
seundo cas4uete en el operador de co#paraci%n$ 8. T Type! ype!loc loc El El varBarcode,ist 5a6 !lo4ue y c)as4uear /l a el +i !lo4ue dentro del aconteci#iento )andler$ 4. Type!loc Un 4inyDB(%@et*alue Blo4ue y c)as4uear /l a el varBarcode,ist !lo4ue$ Type!loc T ype!loc Un blo$ue de te9to y )acer el te9to el cas$uete de barcode barc odelist list$ C)as4uear el blo$ue de te9to a 10.
eti4ueta en
el %@et*alue
Blo4ue$
Estos !lo4uea =rst control para )acer seuro 4ue el %@et*alue El !lo4ue no est" rer reresando esando un null 0alor$ Si el 0alor no es null. el varBarcode,ist est" po!lado con los contenidos de la eti4ueta bar barcode codelist list$ En la 0ersi%n pr%9 pr%9i#a i#a de +yudante de Colecci%n. aHades capacidad de !5s4ueda para estirar ele#entos indi0iduales de la !ase de datos y #ostrar el dato dato al#acenado$ al#acenado$ 'or crear +yudante de Colecci%n @$. aprendiste ❍
El Barcode co#ponente de Esc"ner puede soler
ca#!iar las l,neas #isteriosas #isteriosas y puntos de U'C y #atriciales 8R c%dios a te9to 4ue puede ser utili(ado en 0uestras aplicacion aplicaciones$ es$
❍
'uedes utili(ar te9to te9to iterati0o parsin para crear #ulti30ariedades #ulti30ariedades di#ensionales en TinyDB o una 0aria!le$
+)ora ere eres s a punto para #o0er enci#a para aHadir a5n #"s co#ple& co#ple&idad idad en el +yudan yudante te de Colecci%n A$$
Creando Ayudante Colección
de .0
La A$ 0ersi%n de la +yudante de Colecci%n aHade alunos po2er)ouse funcionalidad a el appli3 cati%n as,
co#o enseH"ndote c%#o para !uscar el dato al#acenado en TinyDB$ El dato for#attin y estructurando de la @$ 0ersi%n es reused para #ostrar los resultados de !5s4ueda$ T)+ntes de es tres pie(as !"sicas de infor#aci%n 4ue 0uestras tiendas de aplicaci%n en TinyDB: el !arcode. un no#!re. y una u!icaci%n$ Necesitas aHadir la capacidad de !uscar enci#a todo de estos ele#entos y reresar cuales4uier resultados$ El
#/todo te #uestras a ti uso para !uscar es liera#ente #"s co#ple&o 4ue te real#ente necesidad para un aplicaci%n tan sencilla$ +un as,. lo utili(o para enseHarte un #/todo 4ue !alan(a !ien a otras aplicaciones$ 'uedes utili(ar la #etodolo,a de !5s4ueda desplieas en el +yudante de Colecci%n
para !uscar a tra0/s de datos 4ue est" al#acenado en TinyDB. Tinye!DB. o 0aria!les lo!ales a toda costa de la cantidad de datos$ >antiene en i#portar 4ue los proyectos en este li!ro no es precepti0o sino descripti0o$ En otras pala!ras.. este proyecto no ilustra c%#o tendrías que i#ple#entar una rutina de !5s4ueda. sino c%#o podrías i#ple#entar una rutina de !5s4ueda$ Uno de las aler,as de prora#ar est" 0iniendo arri!a con #aneras nue0as y 5nicas solucionar pro!le#as #"s eciently$
'(r dise) o Fiura ?3 espect"culos los cro4uis de diseHo para +yudante de Colecci%n A$$
para
Figura -:
cro4uis de DiseHo para +yudante de Colecci%n A$
En esta 0ersi%n. aHades una tercera pantalla 0irtual co#o casa de !5s4ueda y una cuarta pantalla 0irtual co#o pantalla de resultados de la !5s4ueda$ Ta#!i/n aHades ele#entos de interfa( nue0a a cada cual de el e9istiendo pantallas 0irtuales$ La funcionalidad lo!al para la A$ 0ersi%n incluye aHadir ele#entos escanear un
por
!arcode E introduciendo #etadata. y !uscando ele#entos por escanear un ele#ento o escri!iendo en un pla(o de !5s4ueda$ -uestro reto de diseHo pri#ario est" aHadiendo la funcionalidad de !5s4ueda para )a!ilitar un usuario para !uscar por
escaneado !arcode o no#!re o u!icaci%n$$
'(r primiti*e s Estos son los alorit#os !"sicos y pie(as de l%ica para las adiciones a 0uestra aplicaci%n: ❍
Dos pantallas nue0as para !5s4ueda y resultados$
❍
Ele#entos de na0eaci%n nue0a en e9istir pantallas
❍
Un #/todo para carar y !uscando el dato al#acenado
$e+ Compone ntes Nin5n co#ponente nue0o introducido en esta aplicaci%n$
est"
$e+ Blo"ue s S%lo uno el !lo4ue nue0o est" utili(ado en 0ersi%n A$ de +yudante de Colecci%n: ❍ Es
en listaD
'(r pro,resió n Estos son 0uestros pasos de ni0el alto necesitas to#ar tan #ue0es a tra0/s de 0uestro pri#iti0es$ En realidad. construyes el alorit#o de !5s4ueda una 0e( para el !arcode !5s4ueda y entonces reutili(aci%n 4ue c%dio a tra0/s de los aconteci#ientos de !5s4ueda pr%9i#os$ Ta#!i/n utili(as un seundo !arcode esc"ner para #antener el %El resultado !lo4uea distinto en caso 0uestro usuario es a#!os aHadiendo y !uscando en la #is#a sesi%n$ Esto ta#!i/n te das la oportunidad de 0er c%#o para utili(ar ocurrencias #5ltiples de el #is#o aconteci#iento$ + pesar de 4ue el %After+can Es el
#is#o real3aconteci#iento #undial. si se apellida del +Hadir
!ot%n de Ele#ento o las #arcas de !ot%n de la B5s4ueda para #uy di*erent aconteci#ientos de In0entor de la +plicaci%n$ 1.
+Hadir el nue0o -irtualScreens$
.
+Hadir el nue0o na0iational ele#entos$
+Hade ca&as de te9to de B5s4ueda nue0as y !otones de B5s4ueda para !arcode. no#!re. y u!icaci%n$$ .
/.
+Hade ele#entos de resultados de B5s4ueda nue0os$
.
Co#ple9i%n na0iational ele#entos para ca#!iar pantallas$
.
>ano !arcode esc"ner y aconteci#ientos de !5s4ueda$
3.
+conteci#ientos de !5s4ueda de no#!re de #ano$
8.
+conteci#ientos de !5s4ueda de u!icaci%n de #ano$
!mpe2ando encima Ayudante de Colección .0 Inicio por utili(ar el Sal0ar Tan !ot%n en la 0ista de DiseHo para sal0ar una copia nue0a de 0uestro +yudante de Colecci%n$
Est"s creando Ca#!io el no#!re a Collection+ssistantAK $ una copia de +yudante de Colecci%n @$ Colecci%n no#!rada +yudanteAK$ >arca seuro la E9)i!ici%n los co#ponentes In0isi!les en ca&a de control del Espectador est" seleccionado en la parte superior de la 0ista de diseHo$ 'ara la re0isi%n. necesitas aHadir funcionalidad de !5s4ueda a 0uestra aplicaci%n$ Esto re4uiere dos nue0o -irtualScreens
ade#"s de el dos encontrado en +yudante de Colecci%n @$$ El tercer -irtualScreen est" acti0ado por tocar un !ot%n de B5s4ueda de la pantalla principal$ T)e Cuarto -irtualScreen est" acti0ado cu"ndo el proceso de !5s4ueda #uestra los resultados 6o carencia de resultados7$
En esta re0isi%n. aHades dos nue0o -ertical+rrane#ents para utili(ar tan -irtualScreens$ Recuerda para de&ar la propiedad
-isi!le co#pro!ada )asta 4ue )as )ec)o a&usta#iento a la interfa( de usuario:
el #uy 5lti#o
1.
+rrastra dos nue0o -ertical+rrane#ents para DiseHar 0ista$
.
Re!auti(ar el =rst -ertical+rrane#ent
.
Re!auti(ar el seundo -ertical+rrane#ent
*irtual+creen3$ *irtual+creen#$
-uestras necesidades de usuario para ser capaces a na0iate de pantalla a pantalla. as, 4ue necesitas colocar +tr"s pero3 toneladas 4ue rereso un usuario a la pantalla principal. el cual es -irtualScreen@$ Ta#!i/n utili(as un nue0o pero3 tonelada en la pantalla principal para to#ar el usuario a la pantalla de !5s4ueda$ 'ri#ero. indica a 0uestro usuario lo 4ue el prop%sito lo!al de esta pantalla es:
1.
+rrastra y caer
lbl+earcBanner $
la propiedad de Elemento en Base de datos Utilizando Un de el +iuiente: .
'one
una eti4ueta a -irtualScreen$ Lo re!auti(a Te9to de l!lSearc)Banner para leer
Buscar
Co#ple9i%n pr%9i#a arri!a de los ele#entos de interfa( de la !5s4ueda:
Mori(ontal+rrane#ent al -irtualScreen@ !a&o el Sal0ar Ele#ento a Bot%n de !ase de datos$ 1.
+rrastrar un
!ot%n nue0o Mori(ontal+rrane#ent y re!auti(ar +rrastrar
.
un
+earc$ .
'one
Buscar $
la propiedad
a el !ot%n
el btn:
de Te9to de !tnSearc) para
+rrastrar el !ot%n de Ele#entos de la E9)i!ici%n de el -irtualScreen@ a el Mori(ontal+rrane#ent a
/.
la derec)a
de el !ot%n de B5s4ueda nue0o$
La interfa( de usuario de -IrtualScreen ser" co#puesto de una serie de ca&as de te9to siui% por !otones de B5s4ueda$ El tres =elds y los !otones corresponden a !arcode !5s4ueda. !5s4ueda de no#!re. y !5s4ueda de u!icaci%n$ El !arcode la !5s4ueda es 5nica en a4uel lo de&ar" el usuario a cual4uier esc"ner un !arcode para !5s4ueda o
#anual#ente introducir los n5#eros para !5s4ueda$ 'ri#ero. co#ple9i%n arri!a de !arcode interfa( de usuario de !5s4ueda en -irtualScreen:
el la
Mori(ontal+rrane#ent a -irtualScreen$ T)Es auanta el Te9tBo9 co#po3 nent y los dos co#ponentes de Bot%n$ +rrastrar un Te9tBo9 co#ponente a . el Mori(ontal+rrane#ent$ Re!auti(ar la ca&a de te9to 1.
+rrastrar
un
t0t+earcBarcode $
.
para
'one
la propiedad .ntroducir o Escáner
de 'ista de t9tSearc)Barcode Barcode$
un !ot%n a la derec)a de el t9tSearc)Barcode ca&a de te9to$ Lo re!auti(a btn: utili(% para pro0ocar +earcBarcode$ Esto es el !ot%n el aconteci#iento utili(as para iniciar un !arcode !5s4ueda en TinyDB$ . 'one la propiedad de Te9to de el !tnSearc)Barcode para Buscar $ /.
+rrastra y caer
+rrastra y caer otro !ot%n a la derec)a de el 5lti#o !ot%n$ Lo re!auti(a btn+can BarCodeFor+earc $
.
usuario puede tocar para un Esto es el !ot%n escanear un e9istiendo !arcode para po!lar el t9tSearc)Barcode ca&a de te9to$
'one la propiedad de Te9to de !tnScanBarcodeForSearc) para Escanear $ 3.
Utili(ando estos ele#entos de interfaces y una pista sua0e de 0uestra propiedad de 'ista. el usuario sa!e 4ue ta#poco pueden introducir o escanear un !arcode a la ca&a de te9to$
Lueo. co#ple9i%n los ele#entos de interfa( del usuario para !uscar TinyDB por no#!re: un Mori(ontal+rrane#ent !a&o el arrelo )ori(ontal anterior en -irtualScreen@$ un Te9tBo9 co#ponente a +rrastra y caer . Mori(ontal+rrane#ent$ Lo re!auti(a 1.
+rrastra y caer
el
t0t+earc1ame$
.
'one
la propiedad 1ombre para Buscar $
de 'ista para t9tSearc)Na#e para
.ntroducir
un !ot%n a la derec)a de el t9tSearc)Na#e ca&a de te9to$ Lo re!auti(a btn:
/.
+rrastra y caer
+earc1ame$ .
Ca#!io la propiedad de Te9to para
Buscar $
Sitio todo de los co#ponentes de interfa( del usuario para !uscar TinyDB dato por u!icaci%n: un tercer Mori(ontal+rrane#ent en -irtualScreen de!a&o los co#ponentes de !5s4ueda anteriores$ un Te9tBo9 co#ponente a +rrastra y caer . Mori(ontal+rrane#ent$ Lo re!auti(a 1.
+rrastra y caer
el
t0t+earc,oc $
.
'one
la propiedad Ubicaci'n para Buscar $
de 'ista de t9tSearc)Loc para
.ntroducir
un !ot%n a la derec)a de el t9tSearc)Loc ca&a de te9to$ Lo re!auti(a btn:
/.
+rrastra y caer
+earc,oc$ .
'one
la propiedad
de Te9to de !tnSearc)Loc para
Buscar $
ele#ento de na0eaci%n para de&ar usuarios para reresar a la pantalla principal sin co#pletar una !5s4ueda: Final#ente.
necesitas un
un !ot%n co#o el 5lti#o co#ponente en el -irtualScreen$ Lo re!auti(a
1.
+rrastra y caer
btn: +earcBac" $ .
'one
la propiedad
de Te9to para
!espaldar $
Estos son todos los co#ponentes para 0uestra pantalla de !5s4ueda. el cual es -irtualScreen$ Tendr,as 4ue tener una lista de co#ponente y diseHo
4ue parece Fiura ?3$
-irtualScreen es #uc)o co#o -irtualScreenA en a4uel es un sitio sencillo para #ostrar cuales4uier el alorit#o de !5s4ueda$ Dos resultados de eti4uetas indican a el usuario 4u/ son est" #irando en y entonces #ostrar los resultados:
1.
una eti4ueta a
+rrastra y caer
el
-irtualScreen$ Lo re!auti(a lbl+earc!esults Banner $ 'one la propiedad de Te9to para Buscar -antalla de . !esultados$
+rrastra y caer una seunda eti4ueta !a&o el =rst$ Lo re!auti(a lbl+earc!esults$ .
/.
'one
la propiedad
de Te9to a alunos
place)older te9to co#o
!esultados A$u $
Final#ente. puesto un co#ponente de na0eaci%n para to#ar el usuario atr"s a la pantalla principal$ un co#ponente de Bot%n co#o el 5lti#o co#ponente en -irtualScreen$ Lo
1.
+rrastra y caer
re!auti(a btn!esultsBac" $ .
para
'one
la propiedad !espaldar $
de Te9to de el !tnResultsBac
El !tnScanBarcodeForSearc) el !ot%n acti0a el !arcode esc"ner de #odo 4ue 0uestro usuario puede escanear el !arcode 4uieren !uscar$ +un as,. no 4uieres utili(ar el #is#o Barcode co#ponente de Esc"ner 4ue est" siendo utili(ado por el Esc"ner y +Hadir !ot%n de Ele#ento$ Esto es por4ue cada esc"ner enera no s%lo un aconteci#iento pero ta#!i/n un !lo4ue con los 5lti#os esc"ners resulta al#acenado en /l$ 8uieres )ace seuro 4ue 5lti#o esc"ner de ele#ento< de la tienda de 0uestro usuario nunca es confundido con el resultado de esc"ner< de ele#ento de !5s4ueda$ 'ara conseuir alrededor de este . aHades un seundo los Barcode co#ponente de Esc"ner y utili(ar aconteci#ientos y los !lo4ues del seundo co#ponente$
un nue0o Barcode co#ponente de Esc"ner de el Otro Stu* paleta$ +rrastra y caer
>arca seuro la propiedad -isi!le para
-irtualScreen y -irtualScreen es deselected$
-uestro +yudante de Colecci%n co#pletado A$ interfa( de usuario tendr,a 4ue parecer Fiura ?3$
+)ora. enci#a a construir la l%ica y alorit#os para 0uestro +yudante de Colecci%n A$ aplicaci%n en el Editor de Blo4ues$ 'usiste cada cual de los !otones 'osteriores en -irtualScreen y -irtualScreen para reresar el usuario a la pantalla principal$ El aconteci#iento de !ot%n de la B5s4ueda acti0a -irtualScreen$ -irtualScreen est" acti0ado despu/s del alorit#o de !5s4ueda )a sido corrido$
Figura -:
Los co#pon entes de interfa(
de usuario nue0os
'ri#ero. instalado el !ot%n 'osterior para e#oti0o el usuario de -irtualScreen atr"s a la pantalla principal$ -irtualScreen es la pantalla de !5s4ueda pri#aria. as, 4ue no#!ra el !ot%n !tnSearc)Bac:
Type!loc El btn+earcBac"%Acontecimiento de clic )andler y arrastrarlo a un tra!a&o 0ac,o3 espacial en 0uestro Editor de Blo4ues$ . Type!loc El *irtual+creen3%*isible 5a6 !lo4ue y c)as4uear /l a el aconteci#iento$ C)as4uea en un blo$ue falso$ 1.
Type!loc El *irtual+creen(%*isible 5a6 !lo4ue y c)as4uear /l en !a&o el *irtual+creen3 !lo4ue$ C)as4uear un blo$ue cierto a el *irtual+creen(%*isible
.
5a6
!lo4ue$
Este aconteci#iento =res cu"ndo el !ot%n 'osterior est" tocado y dirie el usuario atr"s a la pantalla
principal$ Los !lo4ues pr%9i#os #ane&an la p"ina de
resultados Respalda !ot%n en -irtualScreen:
Type!loc El btn!esultsBac"%Acontecimiento de clic )andler$ 1.
Type!loc El *irtual+creen#% *isible 5a 6 !lo4ue y c)as4uear /l en el aconteci#iento )andler$ C)as4uea en un blo$ue falso$ . Type!loc t)e *irtual+creen(%*isible 5A 6 !lo4ue und snap it in under el *irtual+creen# !lo4ue$ Snap Un true !lo4ue into t)e .
*irtual+creen( 5a 6
cas4uete$ +)ora instalado el
aconteci#iento de !ot%n de la B5s4ueda para -irtualScreen@$ 1.
Type!loc El btn+earc%Acontecimiento de clic )andler$
Type!loc El *irtual+creen(%*isible 5a6 !lo4ue y c)as4uear /l a el aconteci#iento )andler$ C)as4uea en un blo$ue falso$ . Type!loc El *irtual+creen3%*isible 5a6 !lo4ue y c)as4uearlo lueo en el aconteci#iento )andler$ C)as4uea en un blo$ue cierto$ .
Esto trae arri!a de la pantalla de !5s4ueda cu"ndo el usuario toca el !ot%n
de B5s4ueda$
El aconteci#iento pr%9i#o necesitas al #ano es el !ot%n de Esc"ner en la pantalla de !5s4ueda$ Cu"ndo el usuario toca el !ot%n de esc"ner. tena 4ue traer
arri!a de el !arcode esc"ner$ Cu"ndo el usuario escanea un !arcode e9itosa#ente. el resultado de el esc"ner tendr,a 4ue ser carado a el t9tSearc)Barcode y utili(ado para !uscar TinyDB$ Si 0uestro usuario #anual#ente tipos en un c%dio para !5s4ueda. el !ot%n de B5s4ueda utili(a el n5#ero de el t9tSearc)Barcode$ 1.
Type!loc El btn+canbarcodeFor+earc%Acontecimiento de
clic )andler$
Type!loc El Barcode+canner2%Do+can Lla#ada de #/todo y c)as4uear /l en el aconteci#iento )an3 dler$ >arca seuro 4ue es el %Do+can De el seundo
.
!arcode esc"ner$
El !arcode el esc"ner enera un aconteci#iento cu"ndo all, es un esc"ner e9itoso$ T)e Barcode+canner2%After+can El
aconteci#iento lla#a el #is#o procedi#iento 4ue el btnBarcode llamadas de aconteci#iento de la B5s4ueda$
ser utili(ado para a#!os aconteci#ientos$ T)e procBarcode+earc se apellida el Barcode+canner2%After+can 1 ta#!i/n el de de Construyes un procedi#iento para
de clic$ )ic)e0er El aconteci#iento lla#a el procedi#iento. to#a co#o
btn+earcBarcode%Acontecimiento
su !5s4ueda deno#ina los contenidos de t9t3 Searc)Barcode ca&a de te9to$ 'one el %After+can +conteci#iento para po!lar el t9tSearc)Barcode ca&a
de te9to con los resultados de el esc"ner$ Colocas la lla#ada de procedi#iento en a#!os estos aconteci#ientos en &ustos un #o#ento$
1.
Type!loc El
Barcode+canner2%After+can
.
Type!loc El
t0t+earcBarcode%4e0to
/l al$
%After+can
+conteci#iento )andler$ 5a6
!lo4ue y c)as4uear
Blo4ue$
cu"ndo tratando event anor9 you necesidad to tap'n en un blo$ue de nombre% alo tan co#3 ple9 co#o estos . Type!loc El resultado( !lo4ue de 0alor y !lo4ues$ T5 c)as4uear /l a el t0t+earcBarcode%4e0to ta#!i/n Blo4ue$ reutili(aci%n /. Type!loc El btn+earcBarcode%Acontecimiento de clic las 0aria!les )andler$ pro0isionale s utili(aron 'one estos dos aconteci#ientos aparte para un por el #o#ento$ Colocas la lla#ada de procedi#iento en for#attin ellos apenas lo creas$ rou3 tine en +i Aplicaci'n yonvent o es no automaticaliado populate el resultado soc"et en el
%After+can
el acontecimiento
El procedi#iento de !5s4ueda cara los contenidos de el 0arBarcodeList un ele#ento a la 0e( utili(ando un de ForEac !lo4ue$ Entonces co#prue!a para 0er si el pla(o e9)i!ici%n$ de !5s4ueda es iual a el actual#ente carado
!arcode$ Si el actual#ente carado !arcode es iual co#o el pla(o de !5s4ueda. sea for#atted y producci%n para !uscar resultados$ Este alorit#o est" conseuido con un .fElse !lo4ue en el ForEac 4ue controles la 0aria!le local contra el pla(o de !5s4ueda$ El for#attin est" #ane&ado por la #is#a l%ica 4ue
te utili(ado para for#attin en la @$ 0ersi%n$ 'ri#ero.
de=ne las 0aria!les
ser"s
utili(ar en
el
0aria!le para el pla(o de !5s4ueda y otro para los resultados de !5s4ueda: procedi#iento$
Necesitas una
1.
Type!loc Una 0aria!le nue0a y re!auti(arlo
.
Tap%n un !lo4ue de te0to 0ac,o a /l$$
.
Type!loc Una 0aria!le nue0a y re!auti(arlo
var+earc4erm$
var+earc!esults$ /.
Tap%n en un !lo4ue
de te0to
0ac,o$
Estos dos 0aria!les est"n utili(adas a tra0/s del procedi#iento para proporcionar claridad en co#prensi0o 4u/ est" yendo en$ No son estricta#ente necesarios y la rutina podr,a ser )ec)a #"s ecient sin ellos$ +un as,. la claridad es de =rst i#portancia
REMEMBER
Inicio por crear el procedi#iento y poniendo el 0arSearc)Ter# a el n5#ero a4uello )a sido introducido a el t9tSearc)Barcode por el usuario o un esc"ner$ Cuando construyes el procedi#iento. re=ere a el co#plet% !lo4ues en Fiuras ?3?. ?3G. y ?3@$$ 1.
Type!loc El procedi#iento nue0o y re!auti(arlo
.
Type!loc El procBarcode+earc lla#ada y c)as4uear
procBarcode+earc$
/l a
el Barcode+canner2% After+can +conteci#iento
)andler$
Type!loc Otro procBarcode+earc lla#ada y c)as4uear /l a el btn+earcBar acontecimiento de c%dio
.
)andler$ /.
Type!loc El var+earc4erm 5a6 !lo4ue y c)as4uear
/l a el procedi#iento$
Type!loc El c)as4uear /l a
.
t0t+earcBarcode%Blo$ue de te9to el var+earc blo$ue de 'la(o$
y
+)ora colocas el nested ForEac e .fElse !lo4ues para co#pro!ar todo el !arcodes en el var: Barcode,ist:
Type!loc Un ForEac !lo4ue y c)as4uear /l en !a&o el var+earc4erm !lo4ue$ 1.
Type!loc El varBarcode,ist y c)as4uear /l a el fondo de ForEac !lo4ue en el en cas$uete de lista$
.
Estos !ucles a tra0/s del varBarcode,ist y cara cada ele#ento uno a la 0e( a la 0aria!le local. var2. el cual era de=ned cu"ndo creaste el ForEac !lo4ue$ +i el var2 variable isnFt creunt ed9 you cun cas$uear un blo$ue de nombre ent o el NINGÚNT E var soc"et en el ForEac Blo$ue y r ename lo%
+)ora necesitas pro!ar si el ele#ento actual#ente carado es iual co#o el pla(o de !5s4ueda 4ue te sal0ado a 0arSearc)Ter# $ Utili(as un .fElse !lo4ue para construir la l%ica 4ue dice. Si el con3 tiendas de 0arA no es iual co#o los contenidos de 0arSearc)Ter# . nada si son iual. for#ato los contenidos$< Type!loc Un ForEac !lo4ue$ 1.
.
!lo4ue y c)as4uear /l a el
!lo4uear y c)as4uear /l a de prue!a en el .fElse !lo4ue$
Type!loc Un
cas$uete
.fElse
no
el
Type!loc Un e4uals 67 operador de co#paraci%n y c)as4uear /l a el no !lo4uear$ .
Type!loc El var2 !lo4ue de 0alor y c)as4uear /l en el =rst cas4uete en el operador de co#paraci%n$
/.
Type!loc El var+earc4erm !lo4ue de 0alor lo!al y c)as4uear /l a el seundo cas4uete en el
.
operador de co#paraci%n$
El procedi#iento para el !arcode la !5s4ueda tendr,a 4ue parecer Fiura ?3? al llear a este punto$ De&ar el entoncesacer el cas4uete 0ac,o en el .fElse !lo4ue$ Si los contenidos de la 0aria!le pro0isional y la 0aria!le de pla(o de la !5s4ueda no son iual. no 4uieres cual4uier cosa toda0,a$ +4uello es el =rst el caso en 4u/ la prue!a e0al5a a cierto . sini=cando 4ue var2 no es iual al pla(o de !5s4ueda$ El ForEac el !ucle cara otro !arcode a el var2 0aria!le y sus ser"n e0aluados en la #is#a #anera$
contenidos
Figura -:
E#pe(a ndo el procBar Code procedi #iento de B5s4ue da
Si la prue!a e0al5a cuando no cierto. 4uieres to#ar eti4ueta para el !arcode en var2 y uso /l co#o recuperar los contenidos al#acenaron !a&o a4uel !arcode$ T5 entonces for#ato 4ue contenido con el #is#o ForEac !ucle utili(aste en el btnDisplay%Acontecimiento de clic$ 'ara el seundo caso. cu"ndo la prue!a e0al5a no cierta. el var+earc!esults t5 =rst aclarar de cuales4uier resultados de !5s4ueda anteriores$ Entonces estirar los
contenidos al#acenaron !a&o
el !arcode y tienda
en el t#pList utili(aste anterior#ente:
/l
Type!loc El var+earc!esults 5a6 y c)as4uear /l a el másacer cas4uete en el .fElse !lo4ue$ lo 0ac,o$ . Type!loc Un blo$ue de te9to y puesto C)as4uear el !lo4ue de te0to 0ac,o al$ 1.
var+earc!esults$
.
acer
Type!loc El cas4uete$
tmp,ist 5a6
y c)as4uear /l en pr%9i#o en
el más
/.
Type!loc Un blo$ue de ruptura y c)as4uear /l a
el tmp,ist .
!lo4ue$
Type!loc Un 4inyDB(%@et*alue 1 c)as4uear
el cas$uete
de te9to en
/l a
la ruptura
Blo4ue$
Type!loc El var2 !lo4ue de 0alor y c)as4uear /l a el %@et*alue Blo4ue$ .
3.
Type!loc Un blo$ue de te9to y poner
una co#a$ C)as4uea /l a Blo$ue
el en
el te9to a cas4uete en el
de ruptura$
Estos !lo4ues recuperan los contenidos al#acenaron !a&o el !arcode actual#ente en el var2 0aria!le local y
partido /l a una lista al#acenada en el tmp,ist 0aria!le$ Despu/s del tmp,ist est" carado con los contenidos al#acenaron !a&o el !arcode 4ue el usuario !usc%. necesitas utili(ar un ForEac para iterar a tra0/s del tmp,ist y for#ato /l: Type!loc Un ForEac !lo4ue y c)as4uear /l en !a&o el tmp,ist !lo4ue$ 1.
Type!loc El tmp,ist !lo4ue 0aria!le lo!al y c)as4uear /l a el en cas$uete de lista en el fondo de el ForEac !lo4ue$
.
UnRNING
Unf ter un f e; ForEac blo$ue"s9 Aplicaci'n yonvent o s ometimes fa$ueGa to auto populate la variable soc"et en el ForEac blo$ue"s% 4o =0 ti s9 use un blo$ue de nombre from el De=nition drun; er en el BuiltEn tab% Cas$uear el blo$ue de nombre ent
o la variable soc"et en el ForEac blo$ue% 8ou 1ecesidad to cane el t e0t nombre en el blo$ue de nombre% 1ose El n e0t se$uential n>mero var combination Hen otro ; ords9 el previous ForEac you creunt ed de=ned el var29 so you tener $ue use var3 en el blo$ue de nombreI%
Lueo. uso el truco del prora#ador 0ie&o de to#ar prestado c%dio de t5$ T5 ya puesto &unto los !lo4ues para for#attin y outputtin el dato de TinyDB . as, 4ue por 4u/ co#ple9i%n /l otra 0e(; Locali(ar el btnDisplay%Acontecimiento de clic )andler$ Encontrar el interior ForEac !lo4ue en el nested !lo4ues$ Los !lo4ues 4ue for#ato el TinyDB@ dato es los necesitas copiar$ La #anera #"s f"cil de )acer este es para copiar el entero ForEac !lo4ue y entonces arrastrar fuera de los !lo4ues contiene$ No utili(a el copiado ForEac T los asuntos ForEac
4ue esto puede causar es irri3 tatin y duro a = 9$ En ca#!io. &usto sacar las tripas< de el ForEac: todo del for#attin !lo4ues 4ue uso las 0aria!les pro0isionales$
1.
Locali(ar el btnDisplay%Acontecimiento de clic )andler$
.
Clic el interior ForEac nested !lo4ue$
.
Uso el CtrlC para copiar y Ctrl- a pasta /l$
+rrastrar la copia lueo a 0uestro procBarcode+earc procedi#iento$ /.
Clic en el !lo4ue superior en el copiado ForEac !lo4ue y arrastrar todos los !lo4ues de interior y c)as4uearles a 0uestro ForEac !lo4ue en 0uestro procBarcode+earc 60e Fiura ?3G7$
.
.
'uedes eli#inar el 0ie&o copiado y unused ForEac !lo4ue$
Nin5n2 anunciod t)e !arcode t)at 2as searc)ed to t)e for#atted resultados fro# t)e var2 local 0aria!le:
En
!lo4ue. sacar el separator caracteres 6 utili(aste una serie de e4uals seHales para separar el for#atted resultados cu"ndo construiste el for#attin l%ica7 y 5lti#o ne2line
1.
el >ltimo tmp*ar2 5a6
car"cter y puesto les a un lado$ . Type!loc El var2 0alor !lo4ue 0aria!le local y c)as4uear /l a el cas4uete de te0to a!ierto en el blo$ue de te0to .
Copia el ne2line !lo4ue de car"cter$ C)as4uear la copia a el
cas$uete de te0to /.
pr%9i#o$
Resnap En el separator caracteres en el
pr%9i#o$ .
de la #arca$
cas$uete de te0to
C)as4uear 0uestro =nal ne2line car"cter a el
pr%9i#o$
cas$uete de te0to
Figura -:
T)e
for#attin !lo4uea to#ado de !tnDispla y$+conteci #iento de clic )andler
+)ora 4ue te )a for#atted cuales4uier partidos de el tmp,ist. necesitas escri!ir fuera de el tmp*ar a la 0aria!le de resultados$ Entonces !5s4ueda
puedes )acer una decisi%n apro9i#ada#ente si la los contenidos de era e9itosa !asado en el
var+earc!esults 1.
0aria!le$
Type!loc El
/l en !a&o el
var+earc!esults 5a6 >ltimo tmp*ar
!lo4ue y c)as4uear
for#attin Blo4ue$
Type!loc El tmpvar2 0alor lo!al y c)as4uear /l al$ var+earc!esults Blo4ue$ .
!lo4ue
0aria!le
Final#ente. necesitas pro!ar el var+earc!esults para 0er si cual4uier cosa e#pare&ado y era 2rit3 die( a la 0aria!le$ Si no. escri!es 1o Encontrado a los resultados de !5s4ueda$ Si )ay resultados en la 0aria!le de resultados de la !5s4ueda. escri!es los resultados a la eti4ueta de e9)i!ici%n en -irtualScreen$ 1.
Type!loc Un +i !lo4ue y c)as4uear
!a&o el e9terior procBarcode+earc
ForEac
!lo4ue en el
/l en
'rocedi#iento$
Type!loc El e4uals 6Q7 operador de co#paraci%n y c)as4uear /l a el +i !lo4ue$ .
Type!loc El var+earc!esults !lo4ue de 0alor lo!al y c)as4uear /l en el =rst cas4uete en el operador de co#paraci%n$ /. Type!loc Un blo$ue de te9to y eli#inar el te9to para un !lo4ue 0ac,o$ C)as4uea /l a el seundo cas4uete en el operador de co#paraci%n$ . Type!loc El var+earc!esults 5a6 !lo4ue y c)as4uear /l a el entoncesacer cas4uete en el +i .
!lo4ue$ Type!loc Un blo$ue de te9to y ca#!iar el te9to a No Found$ C)as4uear este blo$ue de te9to a el var+earc!esults !lo4ue t5 &usto colocado$
.
Si el var+earc 0aria!le de resultados es 0ac,a. la cuerda de te9to 1o Encontrada est" escrito al 0ari3 capa($ +)ora &usto necesitas escri!ir los contenidos de el var+earc!esults 0aria!le a la eti4ueta de e9)i!ici%n y )a!ilitar el -irtualScreen: Type!loc El lbl+earc!esults%4e0to 5a6 !lo4ue y c)as4uear /l en !a&o el +i 1.
Blo4ue$
Type!loc El var+earc!esults !lo4ue de 0alor y c)as4uear /l a el lbl: +earc!esults%Blo$ue de te9to$ . Type!loc El *irtual+creen3%*isible 5a6 !lo4ue y c)as4uear /l en !a&o el var+earc!esults% C)as4uea en un blo$ue falso$ .
Type!loc El *irtual+creen#%*isible 5a 6 !lo4ue y c)as4uear /l en !a&o pre0i3 ous !lo4ue$ C)as4uea en un blo$ue cierto$
/.
-uestro co#pletado procBarcode+earc el procedi#iento tendr,a 4ue parecer Fiura ?3@$ Figura -:
El co#pleta do procBarc ode procedi# iento de B5s4ued a
Este procedi#iento se apellida por el Barcode+canner2%After+can +conteci#iento y el +earcBarcode%Acontecimiento de clic$ 1. .
Locali(ar el
Barcode+canner2%After+can
btn:
+conteci#iento )andler$
Type!loc El procBarcode+earc !lo4ue de lla#ada y c)as4uear
/l a el %After+can +conteci#iento )andler$ Locali(ar el btn+earcBarcode%Acontecimiento de clic )andler$ .
Type!loc El procBarcode+earc !lo4ue de lla#ada y c)as4uear /l a el %Acontecimiento de clic )andler$
/.
Nin5n2 t)e +can und +earc aconteci#ientos are #anod for t)e !arcode searc) functionality on el searc) pantalla$ Nin5n2 to )andle t)e Searc) !utton inclusot for t)e Na#e Searc) te9t ca&a. you co#ple9i%n out un si#ilar l%ica$ T)e na#e searc) Inclusot prue!as eac) !arcode in t)e varBarcode,ist to 0e 2)et)er
t)e te9t strin entered into t)e t9tNa#eSearc) te9t !o9 i s tiendad in TinyDB$ 1of el te9t strin is e#pare&%. it caras und for#atos t)at !arcode into t)e +earc resultas 0aria!le$ 'ri#ero. sitio el btn+earc1ame%Acontecimiento de clic y carar el te9to introducido a la ca&a de te9to a la
de pla(o de la B5s4ueda$ Entonces colocas el e9terior ForEac !lo4ue 4ue caras cada !arcode en el variable
0arBarcodeList:
Type!loc El btn+earc1ame%Acontecimiento de clic )andler y colocarlo enci#a un tra!a&o 0ac,o3 espacial de el Editor de Blo4ues$
1.
.
/l a
Type!loc El var+earc4erm 5a6 !lo4ue y c)as4uear
el btn+earc1ame% Acontecimiento de clic$
Type!loc El t0t+earc1ame%Blo$ue de te9to y c)as4uear /l a el var+earc4erm .
Blo4ue$ /.
!a&o UnRNING
Type!loc Un ForEac !lo4ue y c)as4uear /l en el t0t+earc1ame%Blo$ue
de te9to$
a"e sure $ue elre es un blo$ue de nombre en
la variable soc"et en elt op of el ForEac blo$ue% +ometimes Aplicaci'n yonvent o f a$ueGa to populate lo% +i elre es nin>n blo$ue de nombre9 dra un fr om el De=nition drun; er y cas$uear 7l ent o la variable soc"et en el ForEac blo$ue% Can@ e el blo$ue de nombre to el n e0t se$uential var number% En este c uns e9 you ;ould nombre 7l var#%
Type!loc El varBarcode,ist !lo4ue de 0alor y c)as4uear /l a el en cas$uete de lista en el fondo de el ForEac !lo4ue$
.
Tan /l anterior#ente. este ForEac cara cada cual !arcode al#acenado en TinyDB a un te#po3 rary lista
para e0aluaci%n o for#attin:$ 1.
Type!loc El
el ForEac .
!lo4ue y c)as4uear /l a
!lo4ue$
Type!loc Un blo$ue de ruptura y c)as4uear /l a
el tmp,ist .
tmp,ist 5a6
!lo4ue$
Type!loc Un 4inyDB(%@et*alue 1 c)as4uear
el cas$uete
de te9to en
la ruptura
/l a
Blo4ue$ Type!loc El var# !lo4ue de 0alor 6la 0aria!le local de el ForEac !lo4ue7 y c)as4uear /l a el %@et*alue
/.
Blo4ue$
Type!loc Un blo$ue de te9to y puesto
.
C)as4uea /l a Blo$ue
el en
cas4uete en el
lo a una co#a sola$
de ruptura$
Estos !lo4uea puestos
ser 4ueried por el tmp,ist )asta un .fElse !lo4ue$ T)e .fElse 'rue!as de !lo4ue si los contenidos de 0arSearc)Ter# es en el tmp,ist$ Si no. el .fElse !lo4ue ForEac cara el nada y el con&unto pr%9i#o de datos en el varBarcode,ist:
Type!loc Un !lo4ue$ 1.
.fElse
!lo4ue y c)as4uear /l en !a&o el tmp,ist
Type!loc Un no !lo4uear y c)as4uear /l a el blo$ue de prue!a de el .fElse !lo4ue$ .
Type!loc Un
.
Es
en ,istaD
!lo4uear$
Blo4ue y c)as4uear /l a
el no
Type!loc El var+earc4erm !lo4ue de 0alor y c)as4uear /l a
/.
el
cas4uete de cosa en el Es
en ,istaD
Blo4ue$
Type!loc El c)as4uear /l a
.
,ista
Blo4ue$
tmp,ist !lo4ue de 0alor lo!al y el cas$uete de lista en el Es en
en ,ista El !lo4ue te de&as para co#pro!ar si una El Es cuerda es en un speci=ed lista$ En este caso. est"s co#pro!ando el tmp,ist a4uello est" creado de el dato al#acenado !a&o un !arcode eti4ueta$ Si el pla(o de !5s4ueda no es en la lista. nada est" )ec)o y el eti4ueta a pr%9i#o !arcode est" utili(ado co#o reload el tmp,ist$ +)ora #ane&as el seundo caso$ Si el pla(o de !5s4ueda es en el tmp,ist. necesitas a for#ato
y producci%n la lista$$
'ri#ero. claro fuera de cuales4uier resultados de so!ra en el var+earc!esults y colocar un nue0o ForEac Blo4ue para #ane&ar el for#attin de el dato encontrado de TinyDB : Type!loc El var+earc!esults 5a6 y c)as4uear /l a el másacer cas4uete en el .fElse !lo4ue$ . C)as4uea en un !lo4ue de te0to del espacio a el var+earc!esults !lo4ue$ 1.
.
en
Type!loc Un nue0o ForEac !lo4ue y c)as4uear /l en pr%9i#o el másacer
cas4uete$
Type!loc El c)as4uear /l a
/.
tmp,ist blo$ue
de valor
el en cas$uete
lo!al y
de lista en 0uestro
nue0o ForEac !lo4ue$ +erc ause Aplicaci'n yonvent o s ometimes forets9 ma"e sure la variable populated con un blo$ue de nombre nombr' varJ%
soc"et es
TIP
Utili(as el for#attin de el btnDisplay%Clic tan t5 anterior#ente$ Recuerda 4ue es #"s f"cil de copiar un !lo4ue de contener co#o el ForEac por4ue cuando copias y pasta un !lo4ue de contener. los !lo4ues internos est"n copiados ta#!i/n$ Copiar"s y pasta el for#attin !lo4ues de el interior ForEac utili(as el de el btnDisplay%Acontecimiento de clic. y entonces for#attin !lo4ues en 0uestro btn+earc1ame%Acontecimiento de clic. por ello a)orro t5 la tarea tediosa de construir la #is#a cosa$ T5 entonces discard el copiado ForEac !lo4ue$ 1.
Locali(ar el btnDisplay%Acontecimiento de clic$
.
Clic el interior ForEac !lo4ue en el
aconteci#iento$
Uso el CtrlC y Ctrl - lla0es para copiar y pasta el ForEac y todo su contu0o !lo4ues$ Lo arrastra enci#a por 0uestro btn+earc1ame
.
aconteci#iento$ Clic y arrastrar el =rst !lo4ue en el copiado el su&et% los !lo4ues est"n ForEac !lo4ues$ Todo
/.
arrastrados$ Vota el conectado for#attin !lo4ues a el ForEac el !lo4ue locali(ado en el entoncesacer cas4uete en vuestro .fElse el !lo4ue locali(ado en el btn+earc1ame%Acontecimiento de clic$ .
Eli#inar el unused 0ie&o ForEac !lo4ue$
Tendr,as 4ue aHadir cu"l !arcode la !5s4ueda estu0o encontrada de!a&o a el for#atted te9to$ 'ara )acer este. aHadir el var# 0aria!le local de el e9terior ForEac !lo4ue a el 5lti#o for#attin paso$ Te Tap%n /l en
correcto por caracteres:
enci#a
de
la
l,nea
de
separator
Locali(ar el >ltimo tmpvar2 !lo4ue en el for#attin !lo4ues$ 1.
.
Sacar el 5lti#o ne2line !lo4ue de car"cter de el
blo$ue de te0to
de la #arca y puesto
lo aparte$
Sacar el separator car"cter te0t !lo4ue y puesto lo aparte$ .
Type!loc El var# 0aria!le local de el e9terior ForEac !lo4ue$ Esto contiene el !arcode a4uel soli%
/.
estira el dato de TinyDB $ . C)as4uear el var# !lo4ue a el !lo4ue a!ierto en el blo$ue de te0to de la #arca$ .
de te0to
Seleccionar el ne;line !lo4ue y crear una copia de
/l utili(ando CtrlC y Ctrl- $
3.
C)as4uea en un ne2line car"cter !a&o el
var#
!lo4ue$ 8.
C)as4uea en el separator el !lo4ue de te9to del
carácter !a&o
el ne2line !lo4ue de car"cter$
C)as4uea en car"cter$ 4.
el 5lti#o ne2line !lo4ue de
Final#ente. puesto el var+earc!esults contenidos a el for#atted te9to en tmpvar2 y entonces #ostrar la 0aria!le en -irtualScreen y )acer la pantalla 0isi!le:
Type!loc El var+earc!esults 5a6 y c)as4uear /l en despu/s de 4ue el 5lti#o for#attin !lo4ue
1.
60e Fiura ?3@@7$ .
Type!loc El tmpvar2 0alor lo!al !lo4ue y c)as4uear
/l a
el
var+earc!esults
Blo4ue$
Type!loc El
!lo4ue y c)as4uear /l en !a&o el fuera3 lado ForEac !lo4ue$ 6+)ora tena 4ue ser el 5lti#o !lo4ue en el
.
%Acontecimiento /.
*irtual+creen3%*isible 5a6
de clic$7
C)as4uear un blo$ue falso a
Type!loc El blo$ue cierto$ .
Type!loc El en !a&o el .
el *irtual+creen3
*irtual+creen#%*isible 5a6
!lo4ue$
!lo4ue y c)as4uear en un
lbl+earc!esults%4e0to 5a6
!lo4ue y c)as4uear /l
-irtualScreen !lo4ue$
Type!loc El var+earc!esults !lo4ue de 0alor lo!al y c)as4uear /l a el lbl: +earc!esults%Blo$ue de te9to$
3.
-uestro co#pletado btn+earc1ame%Acontecimiento de clic )andler tendr,a 4ue parecer Fiura ?3@@ y
Fiura ?3@A$
Figura -:
El co#pletad o !tnSearc) Na#e$
Blo4ues de aconteci# iento del clic 6superiore s7
Figura -:
El co#pletad o !tnSearc) Na#e$
Blo4ues de aconteci# iento del clic 6inferiores 7
5esa6an te '( Estos =nes de proyecto con dos retos$ T)e =rst Es para co#pletar la aplicaci%n 4ue utili(a la l%ica #is#a e9acta 6y !lo4ues de c%dio7 para #ane&ar el Mas construido la l%ica y btn+earc,oc aconteci#iento$ los !lo4ues para La el btn+earc1ame aconteci#iento$ !5s4ueda de u!icaci%n tendr,a 4ue ser id/ntica con la
e9cepci%n de utili(ar las ca&as de te9to de la u!icaci%n y !ot%n de B5s4ueda$ 'rue!a construir el parecer el aconteci#iento para btn+earc1ame aconteci#iento$
T)e second c)allene is #ore diCulto$ TSue is unn es un of redundant !acalaoe in ter aplicaci%n$ )ene0er t)e searc) routine 'roductos un resultado. t)e resultin