0:23
Lo que haré para demostrar todo esto es que vamos hacer una lista de contactos,
una de lista de contactos en la que yo pueda tener el nombre de una persona,
pueda tener su teléfono y además pueda tener un correo electrónico.
Básicamente lo que hará esta aplicación será que cuando seleccionemos una persona,
pasará a otra actividad en donde yo tendré ahí los detalles de esa persona
entre ellos su nombre, su teléfono, su correo electrónico.
Al presionar el teléfono, inmediatamente la actividad deberá
ejecutar la aplicación de llamadas para ejecutar la llamada.
Y también cuando yo presione el botón de email, pues en ese momento se ejecutará
2:35
su Id, le voy a poner lst contactos, okey.
Y estos padding que están por acá me están como estorbando un poco, los voy a quitar.
Si observas, estos padding marcan
el espacio que hay entre la lista y la pantalla del teléfono,
entonces lo que voy a hacer es que lo voy a quitar, así de simple y listo.
Cuida de no llevarte la propiedad tools o cualquiera de las
otras propiedades que son importantes.
4:16
Excelente.
Vamos a crear un poquito el detalle, el detalleContacto,
vamos a diseñar un poco este Layout cómo se debe ver.
Perfecto.
Bueno, lo primero que quiero mostrar en, en grande por aquí, pues es el nombre de
la persona por lo tanto necesitaré un elemento llamado TextView.
Lo siguiente, es que quiero mostrar el teléfono de la persona,
eso también lo haré en un TextView, y antes del teléfono,
antes del teléfono voy a colocar un icono de un teléfono, entonces estará a un lado.
5:31
Vamos a modificar este RelativeLayout, vamos a cambiarlo por un LinearLayout.
Un LinearLayout que sea en posición vertical,
el hecho de que yo tenga un LinearLayout en posición vertical,
me va permitir que todos mis elementos automáticamente y con, en la
forma consecutiva en que están ordenados, van a estar uno debajo de otro, okey.
Entonces voy a colocar aquí en vez de RelativeLayout,
LinearLayout, y debo colocar también la orientación de este LinearLayout.
Entonces voy a poner android:orientation, y vamos a decir vertical.
Bien, y hasta aquí mi TextView,
hasta este momento no veo nada porque el TextView no tiene ningún texto.
Entonces, voy a ir a mi archivo string, para declarar los textos que me,
que se, me funcionaran en este caso solamente como muestra,
6:45
puedo poner Anahí Salgado, recuerda que solamente estos son textos de muestra.
Nombre, teléfono, teléfono
podemos colocar 555777.
Vamos a colocar el email, el email,
y por ejemplo puedo colocar Anahí@gmail.com, perfecto.
Esto simplemente son datos de muestra que los vamos a utilizar
en Activity detalleContacto.
7:37
más abajo colocaré un TextView y voy a colocar wrap_content,
wrap_content, su Id, recuerda que este será el teléfono.
Vamos a poner aquí TextView, teléfono, muy bien.
Colocamos nuestro android:text@string.
A mi me gusta mucho escribir en, en esta vista de código porque puedo tener
mayor control del código, pero si en, en algún momento se te facilita más
utilizar la vista de diseño con toda libertad puedes hacerlo.
8:31
Bien, el email vamos a ponerlo el texto @string email, aquí está.
Perfecto, ahora esto pues no tiene un formato pues muy agradable,
además dijimos que ibamos a colocar aquí una imagen con que tendrá nuestro icono,
y a un lado también el icono para el correo electrónico y para el teléfono,
entonces primeramente voy a concentrarme en el nombre.
El nombre lo voy a hacer un poco más grande y además voy a colcocar en
negritas, es decir, vamos a darle más formato android, vamos a colocarlo
primero en negritas con la propiedad TextStyle, vamos a colocar bold.
Vamos a poner una, un texto más grande con la propiedad TextSize,
a lo mejor si colocamos unos 20 dp, a los mejor un poco más
9:55
esa será la medida para el nombre del contacto, 33 dp es lo que estoy manejando.
Recuerda que son densidades dots per inch, estamos manejando densidades aquí.
Aquí no manejamos nada de pixeles.
Con @dimen estaré
definiendo, estaré colocando o insertando
la variable o el recurso que declaré en @dimen, perfecto.
Ahora vamos a tratar la información que está aquí,
el telefono y el correo electrónico.
11:02
horizontal, para que la imagen quede de un lado y el texto quede de otro.
Voy a colocar aquí el LinearLayout que en su width esté como match_parent
y en su height esté como wrap_content.
Bien, aquí y vamos a meter este TextView que pertenece al teléfono,
lo vamos a meter acá, listo, ahí está,
11:30
no olvidemos la orientación del LinearLayout es una propiedad
muy importante y vamos a decir que sea horizontal.
Okey, bien, ahora vamos a colocar aquí un elemento ImageView,
okey, un ImageView que será, vamos a colocarlo por el
momento wrap_content y wrap_content, vamos a colocar su Id,
su Id debe ser ImageView, ImageView
debe ser el teléfono, okey, recuerda que es el ícono de nuestro teléfono.
Yo you tengo listos dos íconos, yo you los he descargado,
12:10
puedes descargarlo de un sitio en internet que estos íconos
son completamente gratuitos, este sitio en internet se llama
iconsheight.com/ android-icons,
y me gusta mucho porque trae muchos íconos,
sobre todo siguiendo muchas métricas de material design, podemos a lo mejor
seleccionar un ícono de teléfono que es lo que necesitamos para nuestro ejemplo.
Lo buscas, probablemente te pida en algún momento que te registres,
16:17
Okey, yo creo que esta medida está bien.
Ahora si observas, aquí coloqué la medida sp, generalmente en Android podemos
a utilizar la medida sp que es una escala independiente de los pixeles,
eso significa.
O podemos utilizar también dp si es que así lo quieres, como observas pues son
equivalentes, cualquiera de estas es equivalente y cualquiera de estas que
pongas también debe estar completamente declarada en el archivo dimen,
17:36
Vamos a poner aquí top, sí, y podemos utilizar con top, perfecto.
Okey, ahora voy a continuar con este elemento,
y básicamente es lo mismo que acabamos de colocar arriba.
Debemos definir nuestro LinearLayout,
vamos a colocar que sea un match_parent y un match_parent,
18:02
lo pusimos como match_parent y wrap_content,
okey, sí, en height vamos a colocar wrap_content.
Y vamos a colocar este elemento dentro del LinearLayout.
Es importante también definir la orientación, voy a copiar estas dos líneas
que se vuelven a repetir por acá, okey.
Y aquí me está marcando porque dejé este aquí, hay que cortarlo.
19:02
Y también vamos a ponerle que esté centrado con la
propiedad layout_gravity,
que esté centrado vertical.
Ahí está.
Bien, esto you se ve mejor.
Solo voy a colocar un ligero espacio entre estos dos elementos,
vamos a poner aquí un android marginLeft,
20:17
Tenemos nuestra pantalla inicial, que será nuestra lista de contactos,
aquí solamente mostraremos el nombre de cada persona.
Y posteriormente pues, al dar clic en una persona pasará a esta pantalla
donde tendremos el nombre de la persona, su teléfono y su correo.
Al darle clic al teléfono debemos ejecutar una llamada y al darle clic al correo
electrónico debemos tratar de enviar un email.
Entonces vamos a nuestro mainActivity, a trabajar nuestra lista de contactos.
Por el momento la lista de contactos la vamos a cargar
21:17
Contacto tendrá algunos atributos.
Vamos a decir que tenga el atributo nombre,
private_string nombre que tenga el atributo private.
Vamos a manejar el teléfono en string también por si puede tener algunos
guiones, teléfono, nombre y el correo electrónico también,
string email, ¿okey?
Podemos crear nuestros getters y setters, con clic derecho
generate o command N, generar aquí dice getters and setters que esto es un,
esto es parte de lo que vimos en el curso, en nuestro primer curso de Java.
Vamos a seleccionar todos los campos, y obtenemos nombre, nombre, teléfono, email.
25:32
Entonces vamos a poner aquí Anahi@gmail.com.
Entonces, ¿qué hice?
Simplemente en nuestro constructor definí, nuestro constructor de nuestro POJO,
definí un parámetro más, email y se lo estoy asignando al atributo,
¿okey?
Email. Colocaré por aquí, Pedro@gmail.com.
Vamos a hacer otro, Mireya@gmail.com,
27:11
casteo para hacer mi findViewById R.id.lstContactos.
Bien, entonces
dijimos en un video anterior
que para llenar una lista de contactos es necesario utilizar un adaptador.
Entonces colocaremos setAdapter,
setAdapter y lo que recibe este adapter es un arreglo, ¿okey?
Vamos a ponerle new ArrayAdapter, puede ser una lista o un arreglo,
un ArrayAdapter, y lo que estaremos mostrando,
28:52
es una lista de objetos.
Entonces lo que tendremos que hacer para poder mostrar solamente los nombres
será a partir de esta lista de objetos generar solamente los nombres.
Para ello podemos utilizar un foreach, un foreach.
Un foreach que sea un
arreglo en string,
contactos.
Bien.
Entonces vamos a generar un foreach, un foreach
de contacto que esté iterando a contactos.
¿Okey?
Vamos a poner este así, contactos.
Y bueno, mientras se esté llenando esto, mientras se esté recorriendo esto,
lo que yo quiero estar llenando será un arreglo de nombres,
31:09
Ahora sí, listo.
Entonces you podemos pasar aquí nuestros nombres de contacto.
Bien, entonces ahora si estamos pasando un arreglo de nombres de contacto,
solamente los nombres, okey.
Lo que hicimos fue simplemente iterar nuestra lista de contactos,
tratar el objeto con un for each, de una forma más simple,
y pasarlo a un nuevo arreglo que solamente contenga los nombres de los contactos.
Bien, ahorita pues si nosotros corremos esto you podremos ver
nuestra lista de contactos.
31:54
Esperamos.
[AUDIO EN BLANCO]
[AUDIO EN BLANCO] Y listo,
aquí está you nuestra lista de contactos, está Anahí Salgado, Pedro Sánchez,
Mireya Martínez y Juan López.
Bien, ahora vamos a hacer que cada vez que yo de clic en cada elemento,
pues pase a mi ventana de detalle.
Bien, para pasar de una ventana a otra, lo primero que tenemos que saber,
you lo vimos en nuestro video anterior, es que voy a utilizar la clase intent.
33:20
a la lista en ese momento se va a disparar ese método, entonces el método
que buscamos es setOnItemClickListener, setOnItemClickListener,
le voy a colocar aquí new y me pide la interfaz onItemClickListener,
se la voy a dar, y automáticamente todo el código que necesito me lo sobreescribe.
Aquí está mi método onItemClick, el método onItemClick va a estar cachando
algunos parámetros interesantes que en primer lugar estaría cachando la posición,
la posición del elemento en el cual estoy obteniendo.
Por ejemplo en este caso Anahí Salgado me cachará la posición 0,
la lista va enumerada del 0, 1, 2 y 3.
Entonces si yo doy aquí touch, me cachará 0, si doy aquí 1,
2 y 3, y entonces esto para mí es lo que me interesa cachar,
qué elemento estoy cliqueando en mi lista de contactos.
Si a partir de la posición cacho que es el valor 0, entonces quiere decir
que estoy, en mi lista de contactos estoy cachando el objeto 0.
Si estoy en el 1, estoy cachando el objeto 1, o sea Pedro Sánchez,
en el 2 el objeto 2, o sea Mireya y en el 3 Juan López.
Recuerda que todo, todo se va dando a partir de índices
y los índices van enumerados siempre del 0 hasta n menos 1.
Entonces vamos aquí a poner nuestro intent, declaramos nuestro
objeto intent, igual a new, lo instanciamos y recordando
siempre es en dónde estoy ubicada y hacia dónde quiero ir.
Entonces estoy ubicada en mainActivity, aquí voy a poner .this,
y quiero ir a mi clase detalleContacto.class.
Okey, detalleContacto.class.
Bien, y la siguiente instrucción simplemente sería iniciar el intent.
Si hago esto, cualquier item que yo abra automáticamente,
si corremos esto, pues simplemente estaremos cambiando de pantalla,
simplemente de la pantalla inicial en la que estoy, mainActivity,
me estará llevando a mi pantalla detalleContacto.
Así de simple es declarar un intent,
selecciono este y me lleva allá, pero regreso Mireya y me lleva allá,
pero en realidad pues no estoy cachando realmente el elemento.
Lo que yo necesitaría aquí sería enviar un intent con parámetros.
Es decir, yo puedo estar cachando el parámetro,
37:14
nuestros contactos.get y
me pide el índice para saber cuál es el elemento que acabo de cliquear.
Bien. Entonces,
como observas, pues aquí uno ve las condiciones que
no se pueden utilizar para enviar un parámetro, es enviar un objeto completo.
Entonces yo necesitaré enviar varios parámetros con el objeto obtenido, okey.
Entonces, para eso colocaré por ejemplo aquí el nombre del contacto,
solicitaré get, el objeto .getNombre.
Con esto,
esto equivale simplemente a obtener todo el objeto que estoy teniendo aquí.
Y al objeto que estoy obteniendo le solicito el nombre, ahora puedo enviar un
segundo parámetro intent.putExtra para el teléfono, teléfono.
39:41
Ahora del otro lado, del detalleContacto, lo que yo tengo que hacer es que
una vez que estoy mandando los parámetros, tengo que recibir los parámetros.
Y si recuerdas cómo recibir los parámetros, lo hago un objeto bundle.
Un objeto bundle que se puede llamar parámetros,
y que a este objeto le solicitaré el intent, si es que viene un intent,
getExtras y recuerda que en Android los parámetros se llaman extras.
42:42
Y el email vamos a colocar
el email.
Okey.
Bien, you tengo los datos, aquí yo estoy cachando los datos que me está mandando
mainActivity, por aquí me está diciendo mainActivity que tengo algún error.
Okey, necesito cerrar mis paréntesis, estos paréntesis que deje por aquí, okey.
Porque recuerda que es de este método getString.
Listo, you está todo correcto.
[MÚSICA] [MÚSICA]