Está en la página 1de 218

07-11-2018 Capítulo 1 - ¿Qué es Kotlin?

- Curso Kotlin Para android

CURSO KOTLIN PARA ANDROID


Aprende a programar en el lenguaje del futuro

QUIEN SOY CURSO PROGRAMACIÓN ANDROID EN KOTLIN

CONTACTO

Capítulo 1 – ¿Qué es Kotlin?


PÚBLICADO EN 21 MAYO, 2017 POR ARIS

https://cursokotlin.com/que-es-kotlin/ 1/8
07-11-2018 Capítulo 1 - ¿Qué es Kotlin? - Curso Kotlin Para android

Bienvenidos a este primer capítulo de un curso, en el que sin duda, aprenderemos ambos sobre
Kotlin. En esta serie de entradas, mi intención no es copiar y pegar, me gustaría debatir y
aprender recíprocamente.

En este capítulo veremos qué es Kotlin y porqué estamos en el momento perfecto para
empezar.

¿Qué es Kotlin?
Kotlin es un lenguaje de programación creado en 2010 por Jetbrains,  la empresa creadora de
uno de los IDE para java más famosos del mundo intellij.

Kotlin es una alternativa a Java, que suple varios de los problemas más habituales que los
programadores nos encontramos en dicho lenguaje. Por eso y para suplir más carencias de
otros lenguajes de programación kotlin fue desarrollado.

¿Por qué usar Kotlin?


Me imagino que será una de las preguntas que más te estarás haciendo a medida que lees este
artículo, y la verdad que no hay una respuesta mágica que te diga que esto será un éxito o no,
así que te voy a hablar por qué desde mi punto de vista vale la pena.

Seguro contra nulos: Uno de los mayores problemas de usar java son los
NullPointerException. Esto ocasiona una gran cantidad de problemas a la hora de desarrollar.
Con Kotlin nos olvidaremos de esto pues nos obliga a tener en cuenta los posibles null.

Ahorra código: Con kotlin podrás evitar muchísimas líneas de código en comparación con
otros lenguajes. Imagina hacer un POJO (Plain Old Java Objects) en una sola línea en vez de
50-100.

Características de programación funcional: Kotlin está desarrollado para que trabajemos


tanto orientado a objetos, como funcional (e incluso mezclarlos), lo que nos dará mucha más
libertad y la posibilidad de usar características como higher-order functions, function types
y lambdas.

Fácil de usar: Al estar inspirado en lenguajes ya existentes como Java, C# o Scala, la curva de
aprendizaje nos será bastante sencilla.

Es el momento: Hace escasos días en la Google I/O 2017, Kotlin se ha convertido


o cialmente en un lenguaje de Android, por lo que ahora mismo es el boom. Si eres rápido,

https://cursokotlin.com/que-es-kotlin/ 2/8
07-11-2018 Capítulo 1 - ¿Qué es Kotlin? - Curso Kotlin Para android

si trabajas y te implicas puedes dedicarte profesionalmente a Kotlin, y más ahora que


empresas muy importantes están empezando a usar el lenguaje (Pinterest, Gradle, Evernote,
Uber, etc).

Conclusión
Si hay buenos momentos para subirse a la ola, este es uno estupendo. Kotlin ha entrado con
muchísima fuerza, no solo para plantar cara a Java, sino para ganarle. De aquí a un año todo
apunta a que será un per l muy demandado por reclutadores en el Linkedin, y debido a la
novedad del tema actualmente hay muy pocos programadores que controlen Kotlin. Si buscas
mejorar, actualizarte y no quedarte desfasado y poder llegar a ser un referente del sector únete
conmigo a este curso que iré desarrollando y conviértete en un profesional. Ahora o nunca.

Comparte
0 Like 0 Share Tweet

PUBLICADO EL CURSO KOTLIN

ETIQUETADO CON CURSO KOTLIN, INTRODUCCIÓN A KOTLIN, KOTLIN, KOTLIN


LENGUAJE FUNCIONAL, QUE ES KOTLIN

12 COMENTARIOS SOBRE “CAPÍTULO 1 – ¿QUÉ ES


KOTLIN?”

ANTONIO 23 MAYO, 2017 / CONTESTAR

Buenas tarde como puedo contactar contigo para un tema sobre


android? Me mandas un correo a ese para yo poder mandarte desde
mi personal que no quiero publicarlo aqui. Un saludo

https://cursokotlin.com/que-es-kotlin/ 3/8
07-11-2018 Capítulo 1 - ¿Qué es Kotlin? - Curso Kotlin Para android

ANTONIO 23 MAYO, 2017 / CONTESTAR

Agregame a linkedin, te intenté contactar antes.

ARIS Autor del artículo 23 MAYO, 2017 / CONTESTAR

Buenas, he añadido en la página de quien soy mi correo de


contacto.

HILARIO 28 OCTUBRE, 2017 / CONTESTAR

Gracias por crear este curso!!, llevo un tiempo aprendiendo a


programar en Android con Java y acabo de descubir Kotlin, quiero
empezar desde cero con este lenguaje y me viene genial esta web.

Muchas gracias!!.

ARIS Autor del artículo 29 OCTUBRE, 2017 / CONTESTAR

A ti por el comentario ^^

ANGEL ROQUE NIETO 7 NOVIEMBRE, 2017 / CONTESTAR

Gracias por realizar este curso , seguro lo voy a aprender todo.

https://cursokotlin.com/que-es-kotlin/ 4/8
07-11-2018 Capítulo 1 - ¿Qué es Kotlin? - Curso Kotlin Para android

OLIV 2 ENERO, 2018 / CONTESTAR

Vamos a ello!

SERGIO 16 ENERO, 2018 / CONTESTAR

Gracias por crear este curso!!! Un saludo

ALEJANDRO LERMA 16 ENERO, 2018 / CONTESTAR

Hola! me gustaria entrar en el mundo de la programacion y la


consulta es la siguiente…. no he visto Java todavia, solamente hice un
curso de fundamentos de programacion, decis que es mejor tener la
base de Java para luego aprender Kotlin? o puedo encarar
directamente Kotlin?
Gracias por tu tiempo, saludos!

ARIS Autor del artículo 17 ENERO, 2018 / CONTESTAR

Buenas no es necesario conocimientos de ningún lenguaje


anterior. En este curso vas a aprender toda la sintaxis y
conceptos de programación necesarios.

Saludos

https://cursokotlin.com/que-es-kotlin/ 5/8
07-11-2018 Capítulo 1 - ¿Qué es Kotlin? - Curso Kotlin Para android

RICARDO ANGULO HERNANDEZ 19 ENERO,


2018 / CONTESTAR

Hola, me gustaria aprender este nuevo lenguaje que es Kotlin, soy


Programador Android tengo 2 años de experiencia y me interesa
mucho este curso, para poder migrar los proyectos, pero quiero
empezar desde 0, y me da alegria que seas de las pocas personas que
comparte sus conocimientos, eres grande. Saludos!!

J. JAVIER 30 MAYO, 2018 / CONTESTAR

Tiene muy pero que muy buena pinta, gracias por el curso, me
dispongo a darle caña ahora mismo

DEJA UN COMENTARIO

COMENTARIO

https://cursokotlin.com/que-es-kotlin/ 6/8
07-11-2018 Capítulo 1 - ¿Qué es Kotlin? - Curso Kotlin Para android

NOMBRE *

CORREO ELECTRÓNICO *

WEB

No soy un robot
reCAPTCHA
Privacidad - Condiciones

PUBLICAR COMENTARIO

Buscar …

BUSCAR

C O M PA R T I R

https://cursokotlin.com/que-es-kotlin/ 7/8
07-11-2018 Capítulo 1 - ¿Qué es Kotlin? - Curso Kotlin Para android

E T I Q U E TA S

android android studio kotlin aprender kotlin capitulo 2 capitulo 3 capítulo 6 capítulo 7

concatenación kotlin condiciones en kotlin curso android en kotlin curso android kotlin

curso de programacion android en kotlin curso de programación


kotlin curso de programación kotlin en español
curso kotlin curso kotlin en español curso
programacion android en kotlin curso programacion kotlin en español
curso programación kotlin de nir variables kotlin ejecutar .kt expresión when
funciones en kotlin hello world en kotlin if else en kotlin if en kotlin Instalar IntelliJ IDEA para Kotlin

instalar kotlin introducción a kotlin intrucciones condicionales en kotlin kotlin kotlin en español kotlin
lenguaje funcional kotlin switch operaciones aritmeticas kotlin parametros de entrada en kotlin parametros

de salida kotlin que es kotlin switch en kotlin tutorial kotlin usar variables kotlin var variables variables en
kotlin when en kotlin

Copyright © 2018 Curso Kotlin Para android – Tema OnePress hecho por
FameThemes

https://cursokotlin.com/que-es-kotlin/ 8/8
07-11-2018 Capítulo 2 - Instalar IntelliJ IDEA para Kotlin - Curso Kotlin Para android

CURSO KOTLIN PARA ANDROID


Aprende a programar en el lenguaje del futuro

QUIEN SOY CURSO PROGRAMACIÓN ANDROID EN KOTLIN

CONTACTO

Capítulo 2 – Instalar IntelliJ IDEA para Kotlin


PÚBLICADO EN 21 MAYO, 2017 POR ARIS

Una vez nos hemos decidido a empezar con Kotlin, debemos bajarnos un IDE con el que
trabajar. Obviamente tiraremos por IntelliJ, que es de los creadores de este lenguaje.

https://cursokotlin.com/capitulo-2-instalar-intellij-idea-para-kotlin/ 1/7
07-11-2018 Capítulo 2 - Instalar IntelliJ IDEA para Kotlin - Curso Kotlin Para android

Instalando Intellij Idea


Lo primero que debemos hacer es ir a la página o cial y bajarnos la última versión. Podéis ir
directamente desde aquí. Ahora le damos a descargar y nos llevará a la parte inferior de la web
donde tendremos 2 versiones para descargar, Ultimate y Community.  si miramos la tabla
veremos la diferencia entre ambas, como es lógico una versión es de pago (la más completa) y
otra gratuita. Con la versión Comminity tendremos más que necesario.

Descargamos necesaria para nuestro sistema operativo, podemos seleccionarla clickando en el


botón que tenemos a la derecha de download. 

Una vez descargado lo instalamos. En esta caso lo haré con windows, pero si hiciese falta puedo
actualizar la entrada con Linux o Mac OS.

Una vez ejecutado le damos a siguiente y seleccionamos la ruta de la instalación, en la siguiente


vista veremos una pantalla así.

Como este curso está enfocado a Kotlin, en Create associations seleccionaremos los .kt que es el
formato de archivo para los cheros de kotlin, pero si también queréis trabajar con .java o
.groovy los podéis seleccionar, aunque para este curso no harán falta.

Pulsamos en siguiente y luego en instalar. Una vez hecho lo abriremos por primera vez y nos
preguntará si queremos importar algún archivo de con guración (por ejemplo si estamos
instalando esto en un segundo equipo nuestro y queremos mantener la con guración como
estaba en el otro ordenador). Pero esta vez le damos a no.

Con gurando el entorno


Aceptamos los términos y condiciones y nos saldrá una vista para seleccionar el theme. El
theme es básicamente la parte grá ca de nuestro IDE, por defecto es blanca, pero no la
recomiendo si trabajáis muchas horas porque cansa más la vista (al menos a mi) así que yo
seleccionaré la versión Darcula.

La siguiente vista nos mostrará los plugins por defecto que podremos activar, desactivar e
incluso modi car.

https://cursokotlin.com/capitulo-2-instalar-intellij-idea-para-kotlin/ 2/7
07-11-2018 Capítulo 2 - Instalar IntelliJ IDEA para Kotlin - Curso Kotlin Para android

Para este curso no necesitaremos varias cosas de aquí pero si hay varias que recomiendo
(aunque si las desactivamos ahora las podemos activar más tarde y viceversa así que no hay
problema). Test Tools, Build Tools, Version Controls y Other Tools las dejaremos activadas.
Android sería una muy buena opción (me gustaría enfocar el curso más adelante a ello una vez
controlemos lo básico)  pero para eso tiraremos de Android Studio en su debido momento.

Así que pulsamos en Next y nos iremos a las Featured plugins, pero en esta pantalla no
instalaremos nada, así que pulsamos directamente en Start using IntelliJ IDEA.

Descargando el SDK
El siguiente paso será bajarnos el SDK, que es básicamente un conjunto de herramientas
necesarias para poder trabajar con el IDE.

Vamos a la página o cial y hacemos click en Java Platform (JDK) 8u131 o la versión más actual
en el momento.

Una vez le hemos dado nos llevará a un listado de versiones disponibles dependiendo del
 sistema operativo. Así que aceptamos las condiciones y nos bajamos la versión que necesite
nuestro equipo.

En mi caso descargaré jdk-8u131-windows-x64.exe

Una vez descargado lo ejecutamos y lo instalamos, no tiene ninguna complejidad. Recomiendo


dejar la ruta de instalación por defecto para que nuestro IDE lo encuentre, de todos modos si no
lo encuentra solo habría que seleccionarlo dentro del IntelliJ.

Con esto ya tenemos con gurado nuestro entorno para programar en Kotlin.

Comparte
0 Tweet

PUBLICADO EL CURSO KOTLIN

ETIQUETADO CON CAPITULO 2, CURSO KOTLIN, INSTALAR INTELLIJ IDEA PARA


KOTLIN, INSTALAR KOTLIN

https://cursokotlin.com/capitulo-2-instalar-intellij-idea-para-kotlin/ 3/7
07-11-2018 Capítulo 2 - Instalar IntelliJ IDEA para Kotlin - Curso Kotlin Para android

3 COMENTARIOS SOBRE “CAPÍTULO 2 – INSTALAR


INTELLIJ IDEA PARA KOTLIN”

BOREKON 4 NOVIEMBRE, 2017 / CONTESTAR

¿Y por qué no usar el Android Studio? Creo que en la versión 3.0 ya


soporta kotlin, pero no estoy seguro.

BOREKON 4 NOVIEMBRE, 2017 / CONTESTAR

Vale, ya he visto el capítulo 10 ^_^U

ARIS Autor del artículo 5 NOVIEMBRE,


2017 / CONTESTAR

Es que pre ero explicar la sintaxis fuera de android studio.


De todos modos tengo que actualizar el capítulo 10 porque
ya ha salido la versión estable de Android Studio 3.0

Saludos!

DEJA UN COMENTARIO

COMENTARIO

https://cursokotlin.com/capitulo-2-instalar-intellij-idea-para-kotlin/ 4/7
07-11-2018 Capítulo 2 - Instalar IntelliJ IDEA para Kotlin - Curso Kotlin Para android

NOMBRE *

CORREO ELECTRÓNICO *

WEB

No soy un robot
reCAPTCHA
Privacidad - Condiciones

PUBLICAR COMENTARIO

https://cursokotlin.com/capitulo-2-instalar-intellij-idea-para-kotlin/ 5/7
07-11-2018 Capítulo 2 - Instalar IntelliJ IDEA para Kotlin - Curso Kotlin Para android

Buscar …

BUSCAR

C O M PA R T I R

E T I Q U E TA S

android android studio kotlin aprender kotlin capitulo 2 capitulo 3 capítulo 6 capítulo 7

concatenación kotlin condiciones en kotlin curso android en kotlin curso android kotlin

curso de programacion android en kotlin curso de programación


kotlin curso de programación kotlin en español
curso kotlin curso kotlin en español curso
programacion android en kotlin curso programacion kotlin en español
curso programación kotlin de nir variables kotlin ejecutar .kt expresión when
funciones en kotlin hello world en kotlin if else en kotlin if en kotlin Instalar IntelliJ IDEA para Kotlin

instalar kotlin introducción a kotlin intrucciones condicionales en kotlin kotlin kotlin en español kotlin
lenguaje funcional kotlin switch operaciones aritmeticas kotlin parametros de entrada en kotlin parametros

de salida kotlin que es kotlin switch en kotlin tutorial kotlin usar variables kotlin var variables variables en
kotlin when en kotlin

https://cursokotlin.com/capitulo-2-instalar-intellij-idea-para-kotlin/ 6/7
07-11-2018 Capítulo 2 - Instalar IntelliJ IDEA para Kotlin - Curso Kotlin Para android

Copyright © 2018 Curso Kotlin Para android – Tema OnePress hecho por
FameThemes

https://cursokotlin.com/capitulo-2-instalar-intellij-idea-para-kotlin/ 7/7
07-11-2018 Capítulo 3 - Hello World en Kotlin - Curso Kotlin Para android

CURSO KOTLIN PARA ANDROID


Aprende a programar en el lenguaje del futuro

QUIEN SOY CURSO PROGRAMACIÓN ANDROID EN KOTLIN

CONTACTO

Capítulo 3 – Hello World en Kotlin


PÚBLICADO EN 21 MAYO, 2017 POR ARIS

Una vez el entorno ha sido con gurado, es el momento de mostraros como crear un nuevo
proyecto en Kotlin y haremos el famoso “Hello World” que no es más que escribir nuestro
primer programa que mostrará por pantalla dicha frase.

https://cursokotlin.com/capitulo-3-hello-world-kotlin/ 1/10
07-11-2018 Capítulo 3 - Hello World en Kotlin - Curso Kotlin Para android

Lo primero que haremos será abrir IntelliJ y le daremos a Create New Project y nos mostrará una
ventana así

Seleccionamos Kotlin (en el menú lateral) y una vez dentro seleccionamos Kotlin (JVM) y le
damos a siguiente.

Nos aparecerá una ventana así que posiblemente tenga el mismo error.

https://cursokotlin.com/capitulo-3-hello-world-kotlin/ 2/10
07-11-2018 Capítulo 3 - Hello World en Kotlin - Curso Kotlin Para android

Eso signi ca que IntelliJ no está encontrando nuestro SDK (el que instalamos en el capítulo
anterior) así que le daremos a New y buscaremos la ruta donde lo instalamos. Por defecto
sería C:\Program Files\Java\  y el directorio de nuestro SDK.

Le ponemos un nombre a nuestro proyecto, en este caso Hello World y nos quedaría algo así.

Pulsamos en Finish y ya tendremos nuestro proyecto creado.

En el menú lateral izquierdo tendremos por defecto la vista “Project” que será con la que
trabajaremos. Si hacéis click ahí podréis ver diferentes organizaciones de los archivos, pero solo
será visualmente, puesto que la estructura real del proyecto no cambiará por mucho que lo
cambiemos ahí. Tendremos los siguientes archivos y directorios.

https://cursokotlin.com/capitulo-3-hello-world-kotlin/ 3/10
07-11-2018 Capítulo 3 - Hello World en Kotlin - Curso Kotlin Para android

No hay mucho que contar aquí, tenemos la carpeta .idea y el archivo .iml que son cheros de
con guración del IDE. Luego tenemos la carpeta src que será donde crearemos los cheros y
directorios para trabajar.

Así que vamos a la carpeta src, botón secundario New>Kotlin File/Class y nos saldrá una ventana
similar a esta.

Lo llamaremos HelloWorld (todo junto) y en kind lo dejaremos en File por ahora. Ya tenemos
nuestro primer chero con el que trabajar. Lo primero será crear un método main que de la
posibilidad de ejecutar dicho archivo. En capítulos siguientes veremos que son las funciones y
clases pero ahora no hace falta explicarlo.

Para generar dicho método, IntelliJ tiene unos template que nos hará la vida mucho más sencillo
así que basta con escribir main y nos saldrá la opción de autocompletar. Generándonos una
función igual a esta.

1 fun main(args: Array<String>) {


2     
3 }

Esto nos permitirá poder ejecutar el archivo. Ahora dentro del método añadiremos la línea de
código para pintar en pantalla nuestro Hello World. La función completa quedará así.

https://cursokotlin.com/capitulo-3-hello-world-kotlin/ 4/10
07-11-2018 Capítulo 3 - Hello World en Kotlin - Curso Kotlin Para android

1 fun main(args: Array<String>) {


2     println("Hello World")
3 }

Como veis método println hace que todo lo que esté dentro del paréntesis (siempre entre
comillas si es texto) lo muestre por pantalla. También hay que destacar que Kotlin es sensible a
mayúsculas y minúsculas. Si lo queréis probar escribid Println (con la P mayúscula) y veréis que
se os pone en rojo.

Una vez hecho esto hacemos click en la K que está a la izquierda de la función y pulsamos en
run ‘HelloWorldKT’

El proyecto empezará a compilar y una vez termine nos mostrará por pantalla (en la parte
inferior del IDE) el resultado de los cálculos hechos en la función.

Y con esto ya tenemos hecha nuestra primera aplicación. Muy sencillita pero ya tenemos
conocimientos para generar nuestras clases, cheros, interfaces, etc y ejecutarlas.

Comparte
0 Like 0 Share Tweet

https://cursokotlin.com/capitulo-3-hello-world-kotlin/ 5/10
07-11-2018 Capítulo 3 - Hello World en Kotlin - Curso Kotlin Para android

PUBLICADO EL CURSO KOTLIN

ETIQUETADO CON CURSO KOTLIN, CURSO PROGRAMACIÓN KOTLIN, EJECUTAR


.KT, HELLO WORLD EN KOTLIN

7 COMENTARIOS SOBRE “CAPÍTULO 3 – HELLO WORLD


EN KOTLIN”

CYBERIUS 6 OCTUBRE, 2017 / CONTESTAR

Hola, antes que nada, que buen tutorial.


Podrías explicar el por que de estos elementos en la funcion main?:

(args: Array)

De antemano muchas gracias!!!

ARIS Autor del artículo 7 OCTUBRE, 2017 / CONTESTAR

Buenas! El parámetro args (puede llamarse de cualquier otro


modo) es simplemente una array (en los tutoriales siguientes
hablo de ellas) para poder pasarle parámetros si iniciáramos el
programa desde la línea de comandos.

Un saludo

https://cursokotlin.com/capitulo-3-hello-world-kotlin/ 6/10
07-11-2018 Capítulo 3 - Hello World en Kotlin - Curso Kotlin Para android

CYBERIUS 6 OCTUBRE, 2017 / CONTESTAR

Era así: (args: Array)

=p

FRANCISCO 4 ENERO, 2018 / CONTESTAR

me aparece Unresolved reference en printIn (“Hello World”)

ARIS Autor del artículo 6 ENERO, 2018 / CONTESTAR

Primero intenta hacer un build del proyecto borrando dicha


línea, si te sigue sin funcionar Project Structure -> {Select
Module} -> Kotlin -> FIX

KMILO 20 MAYO, 2018 / CONTESTAR

Hola, gracias por el curso, he comenzado a leerlo y me parece muy


bueno hasta ahora.

Esta solo es una sugerencia a modo de que sea más fácil leer.

Podrías agregar enlaces al siguiente capítulo, estoy en el móvil y subir


cada vez a buscar el nuevo capítulo interrumpe mucho la lectura xd

https://cursokotlin.com/capitulo-3-hello-world-kotlin/ 7/10
07-11-2018 Capítulo 3 - Hello World en Kotlin - Curso Kotlin Para android

JOSUE 30 MAYO, 2018 / CONTESTAR

Quiero aportar que si no puedes instalar el IDE y/o solo deseas


probar el código que aquí se explica pueden hacerlo en línea sin
necesidad de instalar nada en : https://try.kotlinlang.org/

Y quiero aprovechar para agradecer por este curso.

DEJA UN COMENTARIO

COMENTARIO

NOMBRE *

CORREO ELECTRÓNICO *

WEB

https://cursokotlin.com/capitulo-3-hello-world-kotlin/ 8/10
07-11-2018 Capítulo 3 - Hello World en Kotlin - Curso Kotlin Para android

No soy un robot
reCAPTCHA
Privacidad - Condiciones

PUBLICAR COMENTARIO

Buscar …

BUSCAR

C O M PA R T I R

E T I Q U E TA S

android android studio kotlin aprender kotlin capitulo 2 capitulo 3 capítulo 6 capítulo 7

concatenación kotlin condiciones en kotlin curso android en kotlin curso android kotlin

curso de programacion android en kotlin curso de programación


kotlin curso de programación kotlin en español
https://cursokotlin.com/capitulo-3-hello-world-kotlin/ 9/10
07-11-2018 Capítulo 3 - Hello World en Kotlin - Curso Kotlin Para android

curso kotlin curso kotlin en español curso


programacion android en kotlin curso programacion kotlin en español
curso programación kotlin de nir variables kotlin ejecutar .kt expresión when
funciones en kotlin hello world en kotlin if else en kotlin if en kotlin Instalar IntelliJ IDEA para Kotlin

instalar kotlin introducción a kotlin intrucciones condicionales en kotlin kotlin kotlin en español kotlin
lenguaje funcional kotlin switch operaciones aritmeticas kotlin parametros de entrada en kotlin parametros

de salida kotlin que es kotlin switch en kotlin tutorial kotlin usar variables kotlin var variables variables en
kotlin when en kotlin

Copyright © 2018 Curso Kotlin Para android – Tema OnePress hecho por
FameThemes

https://cursokotlin.com/capitulo-3-hello-world-kotlin/ 10/10
07-11-2018 Capítulo 4 - Variables en Kotlin - Curso Kotlin Para android

CURSO KOTLIN PARA ANDROID


Aprende a programar en el lenguaje del futuro

QUIEN SOY CURSO PROGRAMACIÓN ANDROID EN KOTLIN

CONTACTO

Capítulo 4 – Variables en Kotlin


PÚBLICADO EN 22 MAYO, 2017 POR ARIS

Como este curso está enfocado para todo tipos de usuarios, lo primero que haré será explicar
que es una variable. A continuación veremos los tipos y como implementarlos en java.

https://cursokotlin.com/capitulo-4-variables-kotlin/ 1/9
07-11-2018 Capítulo 4 - Variables en Kotlin - Curso Kotlin Para android

¿Qué es una variable?


Una variable no es más que un espacio de memoria en el que podemos guardar información.
Dependiendo del tipo de información disponemos de diferentes variables, lo que nos permitirá
evitar problemas como por ejemplo intentar sumar un número con una letra, ya que al ser tipos
de variables diferentes no nos lo permitirá.

Las variables las declararemos del siguiente modo

1 var numeroFavorito = 1

“var” nos dice que es una variable, a continuación le asignamos un nombre, en este caso
“numeroFavorito” y le asignamos un valor.

Como podéis ver, aunque no le hemos dicho el tipo de variable que es, Kotlin se lo ha tragado,
esto es porque Kotlin busca el tipo de valor y le asigna un tipo por detrás, el problema de esto
es que no siempre estará en lo correcto, así que debemos decirle nosotros el tipo.

1 var numeroFavorito: Int = 1

Esta vez le hemos puesto dos puntos y acto seguido hemos añadido el tipo de variable, en este
caso Int. Ahora veremos con que variables podemos trabajar.

Tipos de variables
Variables numéricas
Estas variables se usan para asignar números, calcular tamaños y realizar operaciones
matemáticas entre otras. Dentro de ellas se dividen en dos grupos, las variables enteras y
reales.

Integer

Dentro de las enteras encontramos las variables Int, que es la más básica que usaremos, en la
cual podremos insertar números naturales, pero hay una limitación. Con una variable de tipo
Int no podemos pasar de -2,147,483,647 a 2,147,483,647. Este será el número máximo y
mínimo que soportará.

1 var numeroFavorito: Int = -231

https://cursokotlin.com/capitulo-4-variables-kotlin/ 2/9
07-11-2018 Capítulo 4 - Variables en Kotlin - Curso Kotlin Para android

Long

Básicamente es igual que Int, a diferencia de que soporta un rango mayor de números,
de -9,223,372,036,854,775,807 a 9,223,372,036,854,775,807.

1 var numeroFavorito: Long = 47483647

Float

Llegamos a las variables reales. A diferencia de las anteriores, estas pueden almacenar
decimales. Float soporta hasta 6 decimales, pero también puede trabajar con números enteros.
Esta variable cambia un poco respecto a las demás, pues habrá que meter una “f” al nal del
valor.

1 var numeroFavorito: Float = 1.93f

Double

Terminamos con las variables numéricas con los Double. Muy similar a oat pero soporta hasta
14 decimales, pero también ocupa más memoria así que para un código óptimo deberemos
pensar que tipo será el que más se adapte a nuestro proyecto.  Tampoco habrá que añadir
ningún tipo de letra al nal del valor.

1 var numeroFavorito: Double= 1.932214124

VARIABLES Alfanuméricas
Aunque los números sean muy útiles, hay veces que necesitaremos guardar cadenas de texto, o
una mezcla de caracteres. Para ello tenemos las variables alfanuméricas.

char

La variable Char nos permitirá guardar un carácter de cualquier tipo, lo único que debemos
tener en cuenta es que va entre comillas simples.

1 var numeroFavorito: Char = '1'

var letraFavorita: Char = ‘q’ var numeroFavorito: Char = ‘@’

Como podéis ver dentro de una variable Char podemos almacenar cualquier cosa.

https://cursokotlin.com/capitulo-4-variables-kotlin/ 3/9
07-11-2018 Capítulo 4 - Variables en Kotlin - Curso Kotlin Para android

String

La variable String será la que más usemos como norma general, nos permite almacenar
cualquier tipo de caracteres pero a diferencia del Char, podemos añadir la cantidad que
queramos. Para ser exactos, una String no es más que una cadena de Char. Las cadenas
deberán ir entre comillas dobles.

1 var numeroFavorito: String = "Mi número favorito es el 3"


2 var test: String = "Test. 12345!·$%&/"

VARIABLES Booleanas
Nos queda una última variable muy sencilla, pero a la vez muy práctica. Se tratan de los
Booleanos.

Boolean

Los Booleanos son variables que solo pueden ser verdaderas o falsas (true o false). Su uso es
muy amplio, cuando trabajemos con las condiciones veremos más a fondo este tema. Para
asignar un valor basta con añadir true o false sin comillas.

1 var estoyTriste: Boolean = false


2 var estoyFeliz: Boolean = true

Conclusión
Aunque hayamos visto que no es necesario de nir el tipo de variable, teniendo unos
conocimientos muy básicos no solo vamos a evitar errores sino también a optimizar nuestro
código.

En el siguiente capítulo empezaremos a trabajar con las variables.

Comparte
0 Like 0 Share Tweet

https://cursokotlin.com/capitulo-4-variables-kotlin/ 4/9
07-11-2018 Capítulo 4 - Variables en Kotlin - Curso Kotlin Para android

PUBLICADO EL CURSO KOTLIN

ETIQUETADO CON CAPITULO 3, CURSO DE PROGRAMACIÓN KOTLIN, CURSO


KOTLIN, DEFINIR VARIABLES KOTLIN, KOTLIN, USAR VARIABLES KOTLIN, VAR,
VARIABLES, VARIABLES EN KOTLIN

6 COMENTARIOS SOBRE “CAPÍTULO 4 – VARIABLES EN


KOTLIN”

Pingback: Capítulo 5 - Trabajando con variables en Kotlin - Curso Kotlin Para android

MAXI 13 OCTUBRE, 2017 / CONTESTAR

Muchas gracias, pero creo que he notado que la variable Int y Long
están en el mismo rango y por lo que comentaste Int debería tener
un rango menor y ambas en el artículo están en el mismo Rango
saludos.

ARIS Autor del artículo 13 OCTUBRE, 2017 / CONTESTAR

Toda la razón Maxi. Ya lo he solucionado

Gracias!

https://cursokotlin.com/capitulo-4-variables-kotlin/ 5/9
07-11-2018 Capítulo 4 - Variables en Kotlin - Curso Kotlin Para android

OSKR 27 DICIEMBRE, 2017 / CONTESTAR

tengo lo siguiente…

var a = 1;
var b = 7;
var c = a / b;

println(“a/b = &c”)

——————————————————–
a/b = 0
——————————————————–

Debería obtener :

a/b = 0.14285

Que estoy haciendo mal….?? :/

ARIS Autor del artículo 27 DICIEMBRE, 2017 / CONTESTAR

Buenas, eso es porque te está pillando por defecto que son de


tipo Int y redondea, prueba a asignarle una variable tipo oat o
doble.

Un saludo

Pingback: Capítulo 18 - Componentes personalizados [Primera parte] - Curso Kotlin Para


android

https://cursokotlin.com/capitulo-4-variables-kotlin/ 6/9
07-11-2018 Capítulo 4 - Variables en Kotlin - Curso Kotlin Para android

DEJA UN COMENTARIO

COMENTARIO

NOMBRE *

CORREO ELECTRÓNICO *

WEB

No soy un robot
reCAPTCHA
Privacidad - Condiciones

PUBLICAR COMENTARIO

https://cursokotlin.com/capitulo-4-variables-kotlin/ 7/9
07-11-2018 Capítulo 4 - Variables en Kotlin - Curso Kotlin Para android

Buscar …

BUSCAR

C O M PA R T I R

E T I Q U E TA S

android android studio kotlin aprender kotlin capitulo 2 capitulo 3 capítulo 6 capítulo 7

concatenación kotlin condiciones en kotlin curso android en kotlin curso android kotlin

curso de programacion android en kotlin curso de programación


kotlin curso de programación kotlin en español
curso kotlin curso kotlin en español curso
programacion android en kotlin curso programacion kotlin en español
curso programación kotlin de nir variables kotlin ejecutar .kt expresión when
funciones en kotlin hello world en kotlin if else en kotlin if en kotlin Instalar IntelliJ IDEA para Kotlin

instalar kotlin introducción a kotlin intrucciones condicionales en kotlin kotlin kotlin en español kotlin
lenguaje funcional kotlin switch operaciones aritmeticas kotlin parametros de entrada en kotlin parametros

de salida kotlin que es kotlin switch en kotlin tutorial kotlin usar variables kotlin var variables variables en
kotlin when en kotlin
https://cursokotlin.com/capitulo-4-variables-kotlin/ 8/9
07-11-2018 Capítulo 4 - Variables en Kotlin - Curso Kotlin Para android

Copyright © 2018 Curso Kotlin Para android – Tema OnePress hecho por
FameThemes

https://cursokotlin.com/capitulo-4-variables-kotlin/ 9/9
07-11-2018 Capítulo 5 - Trabajando con variables en Kotlin - Curso Kotlin Para android

CURSO KOTLIN PARA ANDROID


Aprende a programar en el lenguaje del futuro

QUIEN SOY CURSO PROGRAMACIÓN ANDROID EN KOTLIN

CONTACTO

Capítulo 5 – Trabajando con variables en Kotlin


PÚBLICADO EN 27 MAYO, 2017 POR ARIS

En el capítulo 4 vimos los principales tipos de variables, ahora empezaremos a trabajar con ellos
para conseguir un poco de uidez.

https://cursokotlin.com/capitulo-5-trabajando-con-variables-en-kotlin/ 1/11
07-11-2018 Capítulo 5 - Trabajando con variables en Kotlin - Curso Kotlin Para android

Operaciones aritméticas
En el ejemplo que veremos a continuación os mostraré los tipos de operaciones básicas que
podemos realizar.

1 fun main(args: Array<String>) {


2     var a = 10
3     var b = 5
4  
5     print("Suma: ")
6     println(a + b)
7  
8     print("Resta: ")
9     println(a - b)
10  
11     print("Multiplicación: ")
12     println(a * b)
13  
14     print("División: ")
15     println(a / b)
16  
17     print("El módulo (resto): ")
18     println(a % b)
19 }

Como podéis ver son operaciones muy básicas en las que no hay ninguna complicación. Ahora
imaginemos que tenemos un Float y un Int. Tampoco tendríamos para realizar cualquiera de las
operaciones siguientes a no ser que queramos almacenar el resultado en una nueva variable.

1 fun main(args: Array<String>) {


2     var a: Float = 10.5f
3     var b: Int = 5
4  
5     print("Suma: ")
6     var resultado = a + b
7  
8    print(resultado)
9 }

Esto funcionaría, pero solo porque no le hemos asignado un tipo a la variable resultado, así que
automáticamente se le asignará Float. Pero ¿qué pasa si generamos la variable resultado siendo
Int? Pues que no funcionará porque no podemos operar con variables de tipos diferentes. Para
ello haremos uso del toInt() que nos permite convertir una variable a Integer.

https://cursokotlin.com/capitulo-5-trabajando-con-variables-en-kotlin/ 2/11
07-11-2018 Capítulo 5 - Trabajando con variables en Kotlin - Curso Kotlin Para android

1 fun main(args: Array<String>) {


2     var a: Float = 10.5f
3     var b: Int = 5
4     var resultado: Int
5  
6     //Esto no funciona
7     print("Suma: ")
8     resultado =  a + b
9     
10     //Esto sí
11     print("Suma: ")
12     resultado =  a.toInt() + b
13     
14    print(resultado)
15 }

También podríamos haber tenido la variable resultado en Float y pasar b con toFloat().

NOTA: Tenemos varios métodos toX() para cambiar los valores a placer. Debemos tener
cuidado porque si por ejemplo a una String la intentamos pasar a un número, nos dará
una excepción y el código no funcionará.

Concatenación
Ahora imaginad que tenemos dos String, obviamente no las podemos sumar para mostrarlas,
así que para eso está la concatenación, que no es más que a través de un atributo poder poner
más de una variable.

1 fun main(args: Array<String>) {


2     val greeting = "Hola, me llamo"
3     val name = "aris"
4  
5     println("$greeting $name")
6 }

Solo debemos añadir las variables entre comillas dobles y anteponer a cada una de ellas el
símbolo $. Daros cuenta que he añadido un espacio entre ambas variables, sino, aparecerá el
resultado sin ese espacio.

https://cursokotlin.com/capitulo-5-trabajando-con-variables-en-kotlin/ 3/11
07-11-2018 Capítulo 5 - Trabajando con variables en Kotlin - Curso Kotlin Para android

NOTA: Esta vez he puesto val en vez de var. Esto se debe a que Kotlin pre ere que las
variables sean inmutables, por lo que si nunca vamos a cambiar el valor de una variable,
debemos poner val en lugar de var.

Pero con la concatenación también podemos hacer operaciones. Debemos tener cuidado pero
si lo controlamos no debería haber problema.

1     val introduction = "El resultado de"


2     val plus = "más"
3     val firstNumber = 2
4     val secondNumber = 5
5  
6     println("$introduction $firstNumber $plus $secondNumber es: ${firstNu

En este último ejemplo he intentado hacerlo un poco más complejo. Lo primero que hemos
hecho es concatenar una frase, después hemos vuelto a añadir un $ y entre llaver ( {} ) hemos
metido la operación. El resultado sería este.

Comparte
0 Like 0 Share Tweet

PUBLICADO EL CURSO KOTLIN

ETIQUETADO CON CONCATENACIÓN KOTLIN, CURSO DE PROGRAMACIÓN


KOTLIN EN ESPAÑOL, CURSO KOTLIN, OPERACIONES ARITMETICAS KOTLIN,
VARIABLES EN KOTLIN

https://cursokotlin.com/capitulo-5-trabajando-con-variables-en-kotlin/ 4/11
07-11-2018 Capítulo 5 - Trabajando con variables en Kotlin - Curso Kotlin Para android

15 COMENTARIOS SOBRE “CAPÍTULO 5 – TRABAJANDO


CON VARIABLES EN KOTLIN”

OSKR 27 DICIEMBRE, 2017 / CONTESTAR

tengo lo siguiente…

var a = 1;
var b = 7;
var c = a / b;

println(“a/b = &c”)

——————————————————–
a/b = 0
——————————————————–

Debería obtener :

a/b = 0.14285

Que estoy haciendo mal….?? :/

OSKR 27 DICIEMBRE, 2017 / CONTESTAR

Intente convirtiendo b en Float;

var a = 1;
var b = 7;
var c = a / b.toFloat();

println(“a/b = &c”)

https://cursokotlin.com/capitulo-5-trabajando-con-variables-en-kotlin/ 5/11
07-11-2018 Capítulo 5 - Trabajando con variables en Kotlin - Curso Kotlin Para android

——————————————————–
a/b = 0.14285715
——————————————————–

Alguna otra solucion?????


Intente hacer (a/b).toFloat() pero solo obtuve 0.0

ARIS Autor del artículo 27 DICIEMBRE, 2017 / CONTESTAR

El problema es que ya “a” y “b” son de tipo Int, prueba a asignarles el


tipo al declararlas, por ejemplo var a: Float y b : Float.

Un saludo

OLIV 2 ENERO, 2018 / CONTESTAR

siento raro no usar el punto y coma, pero vamos aprendiendo !

BOSS 28 MAYO, 2018 / CONTESTAR

Puedes con gurar para que trabajes con “;”

EDUARDO TRICOTTI 5 FEBRERO, 2018 / CONTESTAR

https://cursokotlin.com/capitulo-5-trabajando-con-variables-en-kotlin/ 6/11
07-11-2018 Capítulo 5 - Trabajando con variables en Kotlin - Curso Kotlin Para android

El usar val para declarar una variable sign ca que es como si fuera
una constante? O se puede cambiar el valor de una variable que fue
declarada con val?

ARIS Autor del artículo 5 FEBRERO, 2018 / CONTESTAR

Exacto, si marcamos la variable como val será un valor


inmutable, es decir, nunca lo podremos cambiar.

EDUARDO TRICOTTI 5 FEBRERO,


2018 / CONTESTAR

Dale, muchas gracias. La palabra reservada Const no existe


en Kotlin o Java?
Te cuento que ayer me anoté a tu curso en Udemy. Lo que
no sabía era lo del descuento, pero mala suerte. Gracias
nuevamente

ARIS Autor del artículo 6 FEBRERO,


2018 / CONTESTAR

He estado mirando y parece que sí.


https://kotlinlang.org/docs/reference/properties.html
Mira el apartado “Compile-Time Constants”

https://cursokotlin.com/capitulo-5-trabajando-con-variables-en-kotlin/ 7/11
07-11-2018 Capítulo 5 - Trabajando con variables en Kotlin - Curso Kotlin Para android

BOSS 28 MAYO, 2018 / CONTESTAR

Es igual a nal de Java.

JULIAN 28 ABRIL, 2018 / CONTESTAR

como apareces en udemy para buscar este curso

ARIS Autor del artículo 30 ABRIL, 2018 / CONTESTAR

Aquí tienes toda la info

https://cursokotlin.com/video-curso-programacion-kotlin-
descuento/

JULIAN 30 ABRIL, 2018 / CONTESTAR

El teclear este codigo en kotlin.


println(“$introduction $ rstNumber $plus $secondNumber es:
${ rstNumber + secondNumber}”)

Esto me sale al ejcutarlo

El resultado de 2 mas 5 es: 25.


porque 25 y no el resultado 7

https://cursokotlin.com/capitulo-5-trabajando-con-variables-en-kotlin/ 8/11
07-11-2018 Capítulo 5 - Trabajando con variables en Kotlin - Curso Kotlin Para android

ARIS Autor del artículo 2 MAYO, 2018 / CONTESTAR

Eso pasa porque estás concatenando las variables en vez de


sumarlas, para ello simplemente sería:

val result = rstnumber+secondnumber


println(“$introduction $ rstNumber $plus $secondNumber es:
$result”)

MAURICIO SANCHEZ 29 AGOSTO, 2018 / CONTESTAR

Julian debe ser por que has declarado las variables rstNumber y
secondNumber como string.
o sea val rstNumber=”2″

DEJA UN COMENTARIO

COMENTARIO

NOMBRE *

https://cursokotlin.com/capitulo-5-trabajando-con-variables-en-kotlin/ 9/11
07-11-2018 Capítulo 5 - Trabajando con variables en Kotlin - Curso Kotlin Para android

CORREO ELECTRÓNICO *

WEB

No soy un robot
reCAPTCHA
Privacidad - Condiciones

PUBLICAR COMENTARIO

Buscar …

BUSCAR

C O M PA R T I R

https://cursokotlin.com/capitulo-5-trabajando-con-variables-en-kotlin/ 10/11
07-11-2018 Capítulo 5 - Trabajando con variables en Kotlin - Curso Kotlin Para android

E T I Q U E TA S

android android studio kotlin aprender kotlin capitulo 2 capitulo 3 capítulo 6 capítulo 7

concatenación kotlin condiciones en kotlin curso android en kotlin curso android kotlin

curso de programacion android en kotlin curso de programación


kotlin curso de programación kotlin en español
curso kotlin curso kotlin en español curso
programacion android en kotlin curso programacion kotlin en español
curso programación kotlin de nir variables kotlin ejecutar .kt expresión when
funciones en kotlin hello world en kotlin if else en kotlin if en kotlin Instalar IntelliJ IDEA para Kotlin

instalar kotlin introducción a kotlin intrucciones condicionales en kotlin kotlin kotlin en español kotlin
lenguaje funcional kotlin switch operaciones aritmeticas kotlin parametros de entrada en kotlin parametros

de salida kotlin que es kotlin switch en kotlin tutorial kotlin usar variables kotlin var variables variables en
kotlin when en kotlin

Copyright © 2018 Curso Kotlin Para android – Tema OnePress hecho por
FameThemes

https://cursokotlin.com/capitulo-5-trabajando-con-variables-en-kotlin/ 11/11
07-11-2018 Capítulo 6 - Funciones en Kotlin - Curso Kotlin Para android

CURSO KOTLIN PARA ANDROID


Aprende a programar en el lenguaje del futuro

QUIEN SOY CURSO PROGRAMACIÓN ANDROID EN KOTLIN

CONTACTO

Capítulo 6 – Funciones en Kotlin


PÚBLICADO EN 28 MAYO, 2017 POR ARIS

En este tema hablaremos de las funciones en kotlin, también llamadas métodos en otros
lenguajes como por ejemplo java. Una función no es más que un conjunto de instrucciones que
realizan una determinada tarea y la podemos invocar mediante su nombre.

https://cursokotlin.com/capitulo-6-funciones-kotlin/ 1/7
07-11-2018 Capítulo 6 - Funciones en Kotlin - Curso Kotlin Para android

Declarando funciones
Las funciones se declaran usando la palabra clave fun, seguida del nombre del método, los
paréntesis donde declararemos los valores de entrada y unas llaves que limitan la función.

1 fun main(args: Array<String>) {


2     showMyName()
3     showMyLastName()
4     showMyAge()
5 }
6 fun showMyName(){
7     println("Me llamo Aris")
8 }
9 fun showMyLastName(){
10     println("Mi Apellido es Guimerá")
11 }
12 fun showMyAge(){
13     println("Tengo 24 años")
14 }

Si os jáis en el código anterior, tenemos 4 métodos. 3 de ellos están destinados para una sola
función (mostrar nombre, edad y apellidos) pero no se ejecutarán a no ser que sean llamados.
Por ello el cuarto método que es el que se ejecutar el código, los llamará en el orden que le
pongamos. Dándonos un resultado así.

Funciones con parámetros de entrada


Ahora vamos a ver las funciones con parámetros de entrada, que son iguales, pero al llamarlas
habrá que mandarle las variables que necesite.

1 fun main(args: Array<String>) {


2     showMyInformation("Aris", "Guimerá", 24)
3 }
4 fun showMyInformation(name: String, lastName: String, age: Int){
5     println("Me llamo $name $lastName y tengo $age años.")
6 }
https://cursokotlin.com/capitulo-6-funciones-kotlin/ 2/7
07-11-2018 Capítulo 6 - Funciones en Kotlin - Curso Kotlin Para android

Como se puede observar, tiene tres parámetros de entrada, la forma de declararlos es muy fácil
el nombre de la variable, seguida de dos puntos y el tipo de variable, aquí si es obligatorio
de nir el tipo.

Obviamente al llamar al método podemos pasarle variables recuperadas de otros métodos y


demás.

Funciones con parámetros de salida


Nos queda por ver como una función puede devolver un resultado o lo que haga nuestro
método. La única limitación es que solo se puede devolver un parámetro, aunque para eso
tenemos los métodos (ya lo veremos más tarde).

1 fun main(args: Array<String>) {


2     var result = add(5, 10)
3     println(result)
4 }
5 fun add(firsNumber: Int, secondNumber: Int) : Int{
6     return firsNumber + secondNumber
7 }

Como el ejemplo anterior añadimos los parámetros de entrada pero esta vez, al cerrar los
paréntesis pondremos el tipo de variable que debe devolver nuestra función. Luego la función
hará todo lo que tenga que hacer y cuando tenga el resultado, lo devolveremos con la palabra
clave return.

Si el método es muy fácil, podemos evitar las llaves y simpli car la función un poco más.

1 fun add(firsNumber: Int, secondNumber: Int) : Int = firsNumber + secondNu

Comparte
0 Like 1 Share Tweet

PUBLICADO EL CURSO KOTLIN

ETIQUETADO CON CAPÍTULO 6, CURSO DE PROGRAMACIÓN KOTLIN, CURSO


DE PROGRAMACIÓN KOTLIN EN ESPAÑOL, CURSO KOTLIN, CURSO
PROGRAMACIÓN KOTLIN, FUNCIONES EN KOTLIN, PARAMETROS DE ENTRADA
EN KOTLIN, PARAMETROS DE SALIDA KOTLIN

https://cursokotlin.com/capitulo-6-funciones-kotlin/ 3/7
07-11-2018 Capítulo 6 - Funciones en Kotlin - Curso Kotlin Para android

2 COMENTARIOS SOBRE “CAPÍTULO 6 – FUNCIONES EN


KOTLIN”

ALFONSO C 20 SEPTIEMBRE, 2018 / CONTESTAR

Hola, En el penúltimo código has puesto:


var result = add(5, 10)
println(resul)

Creo que te ha faltado la “t” o estás haciendo referencia a otra


variable llamada “resul” ??

Gracias por el tutorial

ARIS Autor del artículo 20 SEPTIEMBRE,


2018 / CONTESTAR

Buenas Alfonso, tienes toda la razón, me falta una t.

Ya está corregido, muchas gracias

DEJA UN COMENTARIO

COMENTARIO

https://cursokotlin.com/capitulo-6-funciones-kotlin/ 4/7
07-11-2018 Capítulo 6 - Funciones en Kotlin - Curso Kotlin Para android

NOMBRE *

CORREO ELECTRÓNICO *

WEB

No soy un robot
reCAPTCHA
Privacidad - Condiciones

PUBLICAR COMENTARIO

https://cursokotlin.com/capitulo-6-funciones-kotlin/ 5/7
07-11-2018 Capítulo 6 - Funciones en Kotlin - Curso Kotlin Para android

Buscar …

BUSCAR

C O M PA R T I R

E T I Q U E TA S

android android studio kotlin aprender kotlin capitulo 2 capitulo 3 capítulo 6 capítulo 7

concatenación kotlin condiciones en kotlin curso android en kotlin curso android kotlin

curso de programacion android en kotlin curso de programación


kotlin curso de programación kotlin en español
curso kotlin curso kotlin en español curso
programacion android en kotlin curso programacion kotlin en español
curso programación kotlin de nir variables kotlin ejecutar .kt expresión when
funciones en kotlin hello world en kotlin if else en kotlin if en kotlin Instalar IntelliJ IDEA para Kotlin

instalar kotlin introducción a kotlin intrucciones condicionales en kotlin kotlin kotlin en español kotlin
lenguaje funcional kotlin switch operaciones aritmeticas kotlin parametros de entrada en kotlin parametros

de salida kotlin que es kotlin switch en kotlin tutorial kotlin usar variables kotlin var variables variables en
kotlin when en kotlin

https://cursokotlin.com/capitulo-6-funciones-kotlin/ 6/7
07-11-2018 Capítulo 6 - Funciones en Kotlin - Curso Kotlin Para android

Copyright © 2018 Curso Kotlin Para android – Tema OnePress hecho por
FameThemes

https://cursokotlin.com/capitulo-6-funciones-kotlin/ 7/7
07-11-2018 Capítulo 7 - Instrucciones if-else en Kotlin - Curso Kotlin Para android

CURSO KOTLIN PARA ANDROID


Aprende a programar en el lenguaje del futuro

QUIEN SOY CURSO PROGRAMACIÓN ANDROID EN KOTLIN

CONTACTO

Capítulo 7 – Instrucciones if-else en Kotlin


PÚBLICADO EN 30 MAYO, 2017 POR ARIS

Las instrucciones condicionales nos permiten realizar lógica en función del resultado de una
variable o condición, en este primer apartado veremos las condiciones if-else.

https://cursokotlin.com/capitulo-7-instrucciones-if-else-en-kotlin/ 1/6
07-11-2018 Capítulo 7 - Instrucciones if-else en Kotlin - Curso Kotlin Para android

La con ción if
La condición if es de las más habituales y realizará una función o varias solo si la condición que
hemos generado es verdadera.

1 fun main(args: Array<String>) {


2     var result = add(5, 10)
3  
4     if(result > 10){
5         println("El resultado es mayor que 10")
6     }
7 }
8 fun add(firsNumber: Int, secondNumber: Int) : Int = firsNumber + secondNu

Simplemente debemos añadir la condición entre paréntesis. No solo podemos usar operadores
como <, >, = sino que podemos comparar String a través del doble igual “==”

1     var name = "Aris"


2  
3     if(name == ("Aris")){
4         println("Se llama Aris")
5     }

If-Else
Hay veces que necesitaremos más de un if, y por eso está la palabra clave else que actuará
como segundo condicional.

1   var name = "Aris"


2  
3     if(name == ("Aris")){
4         println("Se llama Aris")
5     }else{
6         println("No se llama Aris")
7     }

El funcionamiento está muy claro, si no pasa la condición estipulada, irá directa al else, así por
ejemplo no tenemos que hacer 2 if, uno comprobando si el nombre es igual, y otro
comprobando si es diferente.

Anidamiento

https://cursokotlin.com/capitulo-7-instrucciones-if-else-en-kotlin/ 2/6
07-11-2018 Capítulo 7 - Instrucciones if-else en Kotlin - Curso Kotlin Para android

Aunque no es la práctica más correcta y no deberíamos abusar, en determinadas ocasiones


necesitamos más condiciones, y aunque podríamos recurrir a otras instrucciones, lo podemos
hacer con if.

1 if(animal == "dog"){
2         println("Es un perro")
3     }else if(animal == "cat"){
4         println("Es un gato")
5     }else if(animal == "bird"){
6         println("Es un pájaro")
7     }else{
8         println("Es otro animal")
9     }

Aquí hemos hecho varios anidamientos y aunque funciona, no es lo más correcto.

Para poder usar más de una condición a la vez gracias a los operadores and (&&) y or (||).

1 //solo entrará si cumple ambas condiciones


2     if(animal == "dog" && raza == "labrador"){
3         println("Es un perro de raza labrador")
4     }
5  
6 //Entrará si es verdadera una de las condiciones
7     if(animal == "dog" || animal == "gato"){
8         println("Es un perro o un gato")
9     }

Comparte
0 Like 1 Share Tweet

PUBLICADO EL CURSO KOTLIN

ETIQUETADO CON CAPÍTULO 7, CONDICIONES EN KOTLIN, CURSO KOTLIN,


CURSO KOTLIN EN ESPAÑOL, CURSO PROGRAMACIÓN KOTLIN, IF ELSE EN
KOTLIN, IF EN KOTLIN, INTRUCCIONES CONDICIONALES EN KOTLIN

https://cursokotlin.com/capitulo-7-instrucciones-if-else-en-kotlin/ 3/6
07-11-2018 Capítulo 7 - Instrucciones if-else en Kotlin - Curso Kotlin Para android

UN COMENTARIO SOBRE “CAPÍTULO 7 –


INSTRUCCIONES IF-ELSE EN KOTLIN”

Pingback: Capítulo 8 - Expresión when en Kotlin - Curso Kotlin Para android

DEJA UN COMENTARIO

COMENTARIO

NOMBRE *

CORREO ELECTRÓNICO *

WEB

https://cursokotlin.com/capitulo-7-instrucciones-if-else-en-kotlin/ 4/6
07-11-2018 Capítulo 7 - Instrucciones if-else en Kotlin - Curso Kotlin Para android

No soy un robot
reCAPTCHA
Privacidad - Condiciones

PUBLICAR COMENTARIO

Buscar …

BUSCAR

C O M PA R T I R

E T I Q U E TA S

android android studio kotlin aprender kotlin capitulo 2 capitulo 3 capítulo 6 capítulo 7

concatenación kotlin condiciones en kotlin curso android en kotlin curso android kotlin

curso de programacion android en kotlin curso de programación


kotlin curso de programación kotlin en español
curso kotlin curso kotlin en español curso
https://cursokotlin.com/capitulo-7-instrucciones-if-else-en-kotlin/ 5/6
07-11-2018 Capítulo 7 - Instrucciones if-else en Kotlin - Curso Kotlin Para android

programacion android en kotlin curso programacion kotlin en español


curso programación kotlin de nir variables kotlin ejecutar .kt expresión when
funciones en kotlin hello world en kotlin if else en kotlin if en kotlin Instalar IntelliJ IDEA para Kotlin

instalar kotlin introducción a kotlin intrucciones condicionales en kotlin kotlin kotlin en español kotlin
lenguaje funcional kotlin switch operaciones aritmeticas kotlin parametros de entrada en kotlin parametros

de salida kotlin que es kotlin switch en kotlin tutorial kotlin usar variables kotlin var variables variables en
kotlin when en kotlin

Copyright © 2018 Curso Kotlin Para android – Tema OnePress hecho por
FameThemes

https://cursokotlin.com/capitulo-7-instrucciones-if-else-en-kotlin/ 6/6
07-11-2018 Capítulo 8 - Expresión when en Kotlin - Curso Kotlin Para android

CURSO KOTLIN PARA ANDROID


Aprende a programar en el lenguaje del futuro

QUIEN SOY CURSO PROGRAMACIÓN ANDROID EN KOTLIN

CONTACTO

Capítulo 8 – Expresión when en Kotlin


PÚBLICADO EN 12 JUNIO, 2017 POR ARIS

Siguiendo con el control de ujo, la siguiente expresión que debemos ver es when. Esta nos
permite realizar una o varias acciones dependiendo del resultado recibido. También se podría
hacer con el tutorial anterior (if-else en Kotlin)  anidando if-else, pero no sería lo correcto. La

https://cursokotlin.com/capitulo-8-expresion-when-kotlin/ 1/7
07-11-2018 Capítulo 8 - Expresión when en Kotlin - Curso Kotlin Para android

forma óptima es esta. Para los que tengan conocimientos básicos de programación en otro
lenguaje, when es el sustituto del switch.

When
1 fun main(args: Array<String>) {
2     getMonth(2)
3 }
4 fun getMonth(month : Int){
5     when (month) {
6         1 -> print("Enero")
7         2 -> print("Febrero")
8         3 -> print("Marzo")
9         4 -> print("Abril")
10         5 -> print("Mayo")
11         6 -> print("Junio")
12         7 -> print("Julio")
13         8 -> print("Agosto")
14         9 -> print("Septiembre")
15         10 -> print("Octubre")
16         11 -> print("Noviembre")
17         12 -> print("Diciembre")
18         else -> {
19             print("No corresponde a ningún mes del año")
20         }
21     }
22 }

El ejemplo es muy sencillo. La función getMonth recibe un Int que se lo mandamos a el when,


una vez ahí comprobará todos los casos disponibles (aquí tenemos de 1 a 12). Si concuerda con
algún valor, automáticamente entrará por ahí y realizará  la función oportuna, en este caso
pintar el mes.

Si por el contrario no encuentra ningún caso igual, entrará por el else. Dicho else no es
obligatorio así que se puede quitar, y si no entra por ningún caso pues simplemente no
mostrará nada.

La expresión when no solo soporta números, sino que puede trabajar con textos y expresiones.

En este ejemplo podemos ver como separar varios valores a través de comas.

https://cursokotlin.com/capitulo-8-expresion-when-kotlin/ 2/7
07-11-2018 Capítulo 8 - Expresión when en Kotlin - Curso Kotlin Para android

1 fun getMonth(month : Int){


2     when (month) {
3         1,2,3 -> print("Primer trimestre del año")
4         4,5,6 -> print("segundo trimestre del año")
5         7,8,9 -> print("tercer trimestre del año")
6         10,11,12 -> print("cuarto trimestre del año")
7     }
8 }

Si son rangos más altos tenemos la posibilidad de usar in y !in para trabajar con arrays y ranges
(lo veremos más tarde).

1 fun getMonth(month : Int){


2     when (month) {
3         in 1..6 -> print("Primer semestre")
4         in 7..12 -> print("segundo semestre")
5         !in 1..12 -> print("no es un mes válido")
6     }
7 }

Con esto podemos comprobar si está entre una cantidad de números especí cos (en este caso
entre 1 y 6 y 7 y 12) o si por el contrario no está en un rango especí co (de 1 a 12) poniendo una
exclamación al principio de la expresión in.

1 fun getMonth(month : Int){


2     when (month) {
3         in 1..6 -> print("Primer semestre")
4         in 7..12 -> print("segundo semestre")
5         !in 1..12 -> print("no es un mes válido")
6     }
7 }

También podemos usar la expresión is para comprobar el tipo de variable que es.

1 fun result(value: Any){


2     when (value){
3         is Int -> print(value + 1)
4         is String -> print("El texto es $value")
5         is Boolean -> if (value) print("es verdadero") else print("es fal
6     }
7 }

Si es Int, sumará 1 al valor, si es una String lo concatenará al texto que vemos arriba y si es un
Booleano nos pintará un resultado dependiendo si es true o falso.

https://cursokotlin.com/capitulo-8-expresion-when-kotlin/ 3/7
07-11-2018 Capítulo 8 - Expresión when en Kotlin - Curso Kotlin Para android

Para nalizar mostraros también que podemos guardar el resultado de un when


automáticamente.

1 fun result(month : Int){


2     val response : String = when (month) {
3         in 1..6 -> "Primer semestre"
4         in 7..12 -> "segundo semestre"
5         !in 1..12 -> "no es un mes válido"
6         else ->  "error"
7     }
8 }

Hemos declarado la variable de tipo String, pero podríamos hacerla de tipo Any si no tuviéramos
claro el resultado de la expresión. Aquí si es obligatorio añadir un else, aunque como podéis
apreciar, podemos quitar los paréntesis de dicha condición.

Comparte
0 Like 1 Share Tweet

PUBLICADO EL CURSO KOTLIN

ETIQUETADO CON APRENDER KOTLIN, CURSO DE PROGRAMACIÓN KOTLIN,


CURSO KOTLIN, CURSO PROGRAMACION KOTLIN EN ESPAÑOL, EXPRESIÓN
WHEN, KOTLIN EN ESPAÑOL, KOTLIN SWITCH, SWITCH EN KOTLIN, WHEN EN
KOTLIN

3 COMENTARIOS SOBRE “CAPÍTULO 8 – EXPRESIÓN


WHEN EN KOTLIN”

DARIO 14 JUNIO, 2017 / CONTESTAR

Gracias, excelente curso


https://cursokotlin.com/capitulo-8-expresion-when-kotlin/ 4/7
07-11-2018 Capítulo 8 - Expresión when en Kotlin - Curso Kotlin Para android

MAXI 13 OCTUBRE, 2017 / CONTESTAR

Muy bueno!

JOSUE 30 MAYO, 2018 / CONTESTAR

Aquí es donde se empieza a poner rudo.


Gracias por compartir conocimientos

DEJA UN COMENTARIO

COMENTARIO

NOMBRE *

https://cursokotlin.com/capitulo-8-expresion-when-kotlin/ 5/7
07-11-2018 Capítulo 8 - Expresión when en Kotlin - Curso Kotlin Para android

CORREO ELECTRÓNICO *

WEB

No soy un robot
reCAPTCHA
Privacidad - Condiciones

PUBLICAR COMENTARIO

Buscar …

BUSCAR

C O M PA R T I R

E T I Q U E TA S

https://cursokotlin.com/capitulo-8-expresion-when-kotlin/ 6/7
07-11-2018 Capítulo 8 - Expresión when en Kotlin - Curso Kotlin Para android

android android studio kotlin aprender kotlin capitulo 2 capitulo 3 capítulo 6 capítulo 7

concatenación kotlin condiciones en kotlin curso android en kotlin curso android kotlin

curso de programacion android en kotlin curso de programación


kotlin curso de programación kotlin en español
curso kotlin curso kotlin en español curso
programacion android en kotlin curso programacion kotlin en español
curso programación kotlin de nir variables kotlin ejecutar .kt expresión when
funciones en kotlin hello world en kotlin if else en kotlin if en kotlin Instalar IntelliJ IDEA para Kotlin

instalar kotlin introducción a kotlin intrucciones condicionales en kotlin kotlin kotlin en español kotlin
lenguaje funcional kotlin switch operaciones aritmeticas kotlin parametros de entrada en kotlin parametros

de salida kotlin que es kotlin switch en kotlin tutorial kotlin usar variables kotlin var variables variables en
kotlin when en kotlin

Copyright © 2018 Curso Kotlin Para android – Tema OnePress hecho por
FameThemes

https://cursokotlin.com/capitulo-8-expresion-when-kotlin/ 7/7
07-11-2018 Capítulo 9 - Arrays en Kotlin - Curso Kotlin Para android

CURSO KOTLIN PARA ANDROID


Aprende a programar en el lenguaje del futuro

QUIEN SOY CURSO PROGRAMACIÓN ANDROID EN KOTLIN

CONTACTO

Capítulo 9 – Arrays en Kotlin


PÚBLICADO EN 25 JUNIO, 2017 POR ARIS

Las arrays (o arreglos) son secuencias de datos, del mismo tipo e identi cados por un nombre
común. Para hacerlo más fácil de entender imaginemos que tenemos que almacenar los 7 días
de la semana, podríamos crear 7 variables Strings o almacenarlas todas en una sola array.

https://cursokotlin.com/capitulo-9-arrays-kotlin/ 1/9
07-11-2018 Capítulo 9 - Arrays en Kotlin - Curso Kotlin Para android

1 fun main(args: Array<String>) {


2     val weekDays = arrayOf("Lunes", "Martes", "Miércoles", "Jueves", "Vie
3 }

Ahora la variable weekDays contiene todos los días de la semana. Ahora para acceder a cada
uno de los valores, lo haremos a través de la posición. Por ejemplo, imaginemos un edi cio,
cada valor se almacena en una planta, por lo que el primer valor estará en la posición 0, el
segundo en la 1 y así con cada uno de ellos. Recordar que se empieza en la posición 0.

Entonces podremos acceder a cada uno de los valores gracias a la función get() que nos
devolverá el valor de dicha posición.

1 fun main(args: Array<String>) {


2 val weekDays = arrayOf("Lunes", "Martes", "Miércoles", "Jueves", "Viern
3  
4     println(weekDays.get(0))
5     println(weekDays.get(1))
6     println(weekDays.get(2))
7     println(weekDays.get(3))
8     println(weekDays.get(4))
9     println(weekDays.get(5))
10     println(weekDays.get(6))
11 }

Esto nos pintará los días de la semana (posiciones de la 0 a la 6). Si pusiéramos en el get una
posición que no tiene, por ejemplo la 7 nos daría una excepción al ejecutarse la aplicación
ArrayIndexOutOfBoundsException, y es por ello por lo que al trabajar con arrays debemos tener
bien claro el tamaño de la array.

Para evitar ese tipo de problemas podemos usar la función size, que nos devolverá el tamaño
de dicha array.

https://cursokotlin.com/capitulo-9-arrays-kotlin/ 2/9
07-11-2018 Capítulo 9 - Arrays en Kotlin - Curso Kotlin Para android

1 fun main(args: Array<String>) {


2     val weekDays = arrayOf("Lunes", "Martes", "Miércoles", "Jueves", "Vi
3  
4     println(weekDays.get(0))
5     println(weekDays.get(1))
6     println(weekDays.get(2))
7     println(weekDays.get(3))
8     println(weekDays.get(4))
9     println(weekDays.get(5))
10     println(weekDays.get(6))
11  
12     if(weekDays.size >= 8){
13         println(weekDays.get(7))
14     }else{
15         println("no tiene más parámetros la array")
16     }
17 }

Si ejecutamos dicho código no entrará en el if porque el tamaño de la array es de 7 (No es lo


mismo tamaño que posición), por lo que nos pintará “no tiene más parámetros en la array”.

Como había dicho al principio del post, las array tienen una serie de limitaciones, entre ellas que
tienen que tener un tamaño jo y será el número de valores que le asignemos al instanciarla,
eso signi ca que siempre va a tener un tamaño de 7, y no podremos añadir más datos, pero si
cambiarlos a través de la función set().

1   weekDays.set(0, "Horrible lunes") //Contenía Lunes


2   weekDays.set(4, "Por fin viernes") //Contenía Viernes

La función set() recibe dos parámetros, el primero es la posición a la que queremos acceder y el
segundo el es nuevo valor a reemplazar. Hay que tener en cuenta que el valor que le
mandemos debe ser del mismo tipo, por ejemplo esta array son de Strings, por lo que no
podemos pasar un Int.

Recorriendo Arrays
Ahora que ya conocemos un poco más que es una array y como trabajar con ellas, vamos a ver
como recorrerlas.

Aunque podríamos hacerlo como hicimos arriba, hay modos más rápidos y óptimos, el bucle
for(). Este bucle nos permite entre otras, recorrer la array entera, posición por posición y
acceder a cada uno de los parámetros que contiene. Vamos a volver a pintar los 7 días de la
semana con este método.

https://cursokotlin.com/capitulo-9-arrays-kotlin/ 3/9
07-11-2018 Capítulo 9 - Arrays en Kotlin - Curso Kotlin Para android

1 fun main(args: Array<String>) {


2     val weekDays = arrayOf("Lunes", "Martes", "Miércoles", "Jueves", "Vie
3  
4     for (posicion in weekDays.indices){
5         println(weekDays.get(posicion))
6     }
7 }

Mucho menos código ¿verdad?. Vamos a ver que es lo que hemos hecho.

El for necesitará  una variable, en este caso “posición” que irá teniendo el valor de cada una de
las posiciones de la array. Su funcionamiento es muy sencillo, cuando pasa por el for por
primera vez, tendrá valor 0, entonces comprueba el tamaño de weekDays y si es mayor, entra a
la función, hace lo que le pidamos (en este caso pintar en la posición de la variable) y vuelve al
inicio, así hasta llegar a 6 que será la última posición de la array.

También el for nos permite sacar tanto el índice como el valor directamente, para ello haríamos
lo siguiente.

1 fun main(args: Array<String>) {


2     val weekDays = arrayOf("Lunes", "Martes", "Miércoles", "Jueves", "Vie
3  
4     for ((posicion, valor) in weekDays.withIndex()) {
5         println("La posición $posicion contiene el valor $valor")
6     }
7 }

Y dicho for nos devolvería lo siguiente

https://cursokotlin.com/capitulo-9-arrays-kotlin/ 4/9
07-11-2018 Capítulo 9 - Arrays en Kotlin - Curso Kotlin Para android

Si por el contrario solo os interesa el contenido podríamos hacer directamente un for in sin
acceder a la posición, solo al contenido.

1   for (weekDay in weekDays) {


2         println(weekDay)
3     }

Devolviéndonos la lista de días de la semana.

Comparte
0 Like 3 Share Tweet

PUBLICADO EL CURSO KOTLIN

ETIQUETADO CON ARRAYS EN KOTLIN, ARREGLOS EN KOTLIN, CURSO DE


PROGRAMACIÓN KOTLIN, CURSO KOTLIN, CURSO KOTLIN EN ESPAÑOL, FOR
ARRAY KOTLIN, KOTLIN ARRAY, RECORRER ARRAY EN KOTLIN, RECORRER
ARREGLO EN KOTLIN, TUTORIAL KOTLIN, TUTORIAL KOTLIN EN ESPAÑOL

https://cursokotlin.com/capitulo-9-arrays-kotlin/ 5/9
07-11-2018 Capítulo 9 - Arrays en Kotlin - Curso Kotlin Para android

4 COMENTARIOS SOBRE “CAPÍTULO 9 – ARRAYS EN


KOTLIN”

Pingback: Capítulo 10 - Listas en Kotlin - Curso Kotlin Para android

BANANNA_POTATO_NAH 17 AGOSTO, 2017 / CONTESTAR

una pregunta como podría crear una función en una clase que reciba
como parámetro un array ???
y como puedo hacer la llamada a esta función en mi método main???

ARIS Autor del artículo 17 AGOSTO, 2017 / CONTESTAR

Buenas @BANANNA_POTATO_NAH

La función que reciba una array sería así:

fun workingWithArray(myArray: Array) {


//trabajamos con la array que recibimos
}

Y para llamarla desde el método main simplemente llamamos a


la función

override fun onCreate(savedInstanceState: Bundle?) {


super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

https://cursokotlin.com/capitulo-9-arrays-kotlin/ 6/9
07-11-2018 Capítulo 9 - Arrays en Kotlin - Curso Kotlin Para android

workingWithArray(weekDays) //Le pasamos una array de días de


la semana
}

Saludos

JOSUE GONZÁLEZ 31 MAYO, 2018 / CONTESTAR

@Aris muchas gracias por el curso.


Lo estoy siguiendo y e aprendido mucho.

DEJA UN COMENTARIO

COMENTARIO

NOMBRE *

CORREO ELECTRÓNICO *

https://cursokotlin.com/capitulo-9-arrays-kotlin/ 7/9
07-11-2018 Capítulo 9 - Arrays en Kotlin - Curso Kotlin Para android

WEB

No soy un robot
reCAPTCHA
Privacidad - Condiciones

PUBLICAR COMENTARIO

Buscar …

BUSCAR

C O M PA R T I R

E T I Q U E TA S

android android studio kotlin aprender kotlin capitulo 2 capitulo 3 capítulo 6 capítulo 7

concatenación kotlin condiciones en kotlin curso android en kotlin curso android kotlin

https://cursokotlin.com/capitulo-9-arrays-kotlin/ 8/9
07-11-2018 Capítulo 9 - Arrays en Kotlin - Curso Kotlin Para android

curso de programacion android en kotlin curso de programación


kotlin curso de programación kotlin en español
curso kotlin curso kotlin en español curso
programacion android en kotlin curso programacion kotlin en español
curso programación kotlin de nir variables kotlin ejecutar .kt expresión when
funciones en kotlin hello world en kotlin if else en kotlin if en kotlin Instalar IntelliJ IDEA para Kotlin

instalar kotlin introducción a kotlin intrucciones condicionales en kotlin kotlin kotlin en español kotlin
lenguaje funcional kotlin switch operaciones aritmeticas kotlin parametros de entrada en kotlin parametros

de salida kotlin que es kotlin switch en kotlin tutorial kotlin usar variables kotlin var variables variables en
kotlin when en kotlin

Copyright © 2018 Curso Kotlin Para android – Tema OnePress hecho por
FameThemes

https://cursokotlin.com/capitulo-9-arrays-kotlin/ 9/9
07-11-2018 Capítulo 10 - Listas en Kotlin - Curso Kotlin Para android

CURSO KOTLIN PARA ANDROID


Aprende a programar en el lenguaje del futuro

QUIEN SOY CURSO PROGRAMACIÓN ANDROID EN KOTLIN

CONTACTO

Capítulo 10 – Listas en Kotlin


PÚBLICADO EN 5 JULIO, 2017 POR ARIS

Listas en Kotlin

https://cursokotlin.com/capitulo-10-listas-en-kotlin/ 1/11
07-11-2018 Capítulo 10 - Listas en Kotlin - Curso Kotlin Para android

En el capítulo anterior hablamos sobre los arrays o arreglos y vimos todo el potencial que tenía,
pero uno de los mayores inconvenientes era la limitación al de nirlos, puesto que teníamos que
saber de ante mano el tamaño de dicho array.

Tipos de listas
Las colecciones se pueden clasi car en dos grandes grupos, las mutables e inmutables. Es decir,
las que se pueden editar (mutables) y las que son solo de lectura (inmutable).

Listas inmutables
La declaración de una lista inmutable sería así.

1 val readOnly: List<String> = listOf("Lunes", "Martes", "Miércoles", "Juev

Existen varias funciones útiles para trabajar con ellas.

1     val readOnly: List<String> = listOf("Lunes", "Martes", "Miércoles", "


2  
3     readOnly.size //Muestra el tamaño de la lista
4     readOnly.get(3) //Devuelve el valor de la posición 3
5     readOnly.first() //Devuelve el primer valor
6     readOnly.last() //Devuelve el último valor
7     println(readOnly) //[Lunes, Martes, Miércoles, Jueves, Viernes, Sábad

Como pueden ver podemos trabajar completamente con ellas, a excepción de añadir más
elementos.

También podemos ltrar usando el patrón iterator, que es un mecanismo para acceder a los
elementos de la lista, por ejemplo . rst() o .last()

1     val a = readOnly.filter { it == "Lunes" || it == "Juernes" }

El . lter nos permite ltrar en la lista a través de una o varias condiciones que pongamos. Para
ello llamamos a it (iterator) y buscaremos en la lista, si contiene la palabra “Lunes” o “Juernes“.
En este caso solo pintará “Lunes“.

Listas mutables
Ahora nos toca hablar de las más interesantes, las listas mutables, que poseen todo lo anterior,
pero también nos da la posibilidad de ir rellenando la lista a medida que lo necesitemos, el
único inconveniente es que más ine ciente con la memoria.

https://cursokotlin.com/capitulo-10-listas-en-kotlin/ 2/11
07-11-2018 Capítulo 10 - Listas en Kotlin - Curso Kotlin Para android

1 var mutableList: MutableList<String> = mutableListOf("Lunes", "Martes", "


2  
3     println(readOnly) //[Lunes, Martes, Miércoles, Jueves, Viernes, Sábad
4  
5     mutableList.add("domingo")

La de nición es muy similar, a través de la función mutableListOf. Ahora si os jáis he añadido de


lunes a sábado que será lo que pintará, luego, usando mutableList.add he añadido el domingo.

Por defecto los valores se irán añadiendo en la última posición, pero podemos añadir el índice
en el que queramos escribir nuestro valor.

1     mutableList.add(0, "Semana: ")

Con esto, si pintásemos la lista nos mostraría lo siguiente.

1 [Semana: , Lunes, Martes, Miércoles, Jueves, Viernes, Sábado, domingo]

Ahora tenemos que tener cuidado con una lista mutable por el simple hecho de que podría
estar vacía o contener un null. Un null es un valor nulo en una de sus posiciones, que, si
acedemos a él e intentamos operar, la aplicación se romperá, nos saltará un crash. Para ello,
tenemos algunas funciones que nos permitirá trabajar como una lista inmutable, pero con
seguridad.

1 var mutableList: MutableList<String> = mutableListOf()


2  
3     mutableList.none() //Nos devuelve un true si está vacía la lista
4     mutableList.firstOrNull() //Nos devolverá el primer campo, y si no ha
5     mutableList.elementAtOrNull(2) //El elemento del índice 2, si no hay,
6     mutableList.lastOrNull() //Último valor de la lista o null

En este ejemplo he instanciado una lista sin valor alguno, por lo que está vacía. Con todos esos
métodos recuperaremos un null (menos el primero que dará true) y la aplicación seguirá
corriendo, si por le contrario hubiera puesto un . rst() nos hubiese pasado lo siguiente.

https://cursokotlin.com/capitulo-10-listas-en-kotlin/ 3/11
07-11-2018 Capítulo 10 - Listas en Kotlin - Curso Kotlin Para android

Debemos de tener mucho cuidado a la hora de trabajar con datos que puedan mutar.

Recorriendo listas
Igual que hicimos en el capítulo de las arrays, aquí también tenemos formas (muy similares)
para recorrer las listas.

Esta sería la forma más sencilla, y nos devolvería el contenido de cada uno de los valores de la
lista.

1   for (item in mutableList) {


2         print(item)
3     }

Si necesitamos saber también la posición de cada uno de los valores podemos usar la función
.withIndex que nos permite generar 2 variables, la primera será la posición y la segunda el
contenido.

1   for ((indice, item) in mutableList.withIndex()) {


2         println("La posición $indice contiene $item")
3     }

Para el último ejemplo, usaremos .forEach, una función que hará que por cada posición haga
una cosa, por ejemplo pintar el valor como el for anterior. A diferencia de ellos, no tenemos una
variable con el contenido (véase índice e item) sino que accedemos a él con el iterator, en este
caso simplemente habría que poner it.

En este ejemplo imaginemos que queremos añadir a los días de la semana dos puntos “:” así
que vamos a crear una nueva lista (mutable) e iremos rellenando la lista a través del forEach.

1   val mutableList: MutableList<String> = mutableListOf("Lunes", "Martes",


2     val newListEmpty: MutableList<String> = mutableListOf()
3  
4     mutableList.forEach {
5         newListEmpty.add(it+":")
6     }
7  
8     print(newListEmpty)

Comparte
0 Like 2 Share Tweet

https://cursokotlin.com/capitulo-10-listas-en-kotlin/ 4/11
07-11-2018 Capítulo 10 - Listas en Kotlin - Curso Kotlin Para android

PUBLICADO EL CURSO KOTLIN

ETIQUETADO CON APRENDER KOTLIN, COLECCIONES EN KOTLIN,


COLLECTIONS, CURSO DE PROGRAMACIÓN KOTLIN EN ESPAÑOL, CURSO
KOTLIN EN ESPAÑOL, KOTLIN, LISTAS EN KOTLIN, PROGRAMACION EN
KOTLIN

11 COMENTARIOS SOBRE “CAPÍTULO 10 – LISTAS EN


KOTLIN”

OSCAR 15 OCTUBRE, 2017 / CONTESTAR

En esta mañana me he leido los 10 capitulos y te agradezco por ellos


son geniales. Tienes alma de maestro en ayudar a todos los
hambrientos de conocimiento (me incluyo) Gracias.
Cuando subes mas capitulos????

ARIS Autor del artículo 15 OCTUBRE, 2017 / CONTESTAR

Me alegra mucho leer este tipo de comentarios. Aquí tienes el


índice de todos los capítulos ( https://cursokotlin.com/curso-
programacion-kotlin-android/ ) , ahora vamos por el 16, el 17
espero sacarlo esta semana (es bastante amplio), persistencia
de datos con Room, muy interesante y útil. En la página de
Facebook voy publicando todos los capítulos nuevos por si
quieres dejar un like

Saludos!

https://cursokotlin.com/capitulo-10-listas-en-kotlin/ 5/11
07-11-2018 Capítulo 10 - Listas en Kotlin - Curso Kotlin Para android

ADRIAN 18 MAYO, 2018 / CONTESTAR

El día de hoy 18 de mayo de 2018 me he leido los 10


capitulos, y segui buscando y encontre que que existen
capitulos del 11 al 17 con Android Studio, pero mi pregunta
es ¿tendras más capitulos del lenguaje puro?, son muy
buenos y me gustaria continuar aprendiendo.

ARIS Autor del artículo 19 MAYO, 2018 / CONTESTAR

La idea es seguir enfocando el proyecto a Android, de


todos modos en cada uno de los capítulos suelo explicar
algo de sintaxis del lenguaje.

Un saludo

MARCOS 10 NOVIEMBRE, 2017 / CONTESTAR

Hola Aris,

No entiendo por qué lo siguiente funciona.

for ((indice, item) in mutableList.withIndex()) {


println(“La posición $indice contiene $item”)
}

“indice” y “item” son nombres que te estás inventando tu no? Podrías


llamarles index y cosa por ejemplo.

https://cursokotlin.com/capitulo-10-listas-en-kotlin/ 6/11
07-11-2018 Capítulo 10 - Listas en Kotlin - Curso Kotlin Para android

Imagino que independientemente del nombre que le des, la primera


siempre sera para indice y la segunda para el valor, y no aceptará
más de dos parametros?

ARIS Autor del artículo 10 NOVIEMBRE,


2017 / CONTESTAR

Exacto @Marcos, los nombres los puedes poner a tu gusto. ¿Qué


es lo que no funciona o que error tienes? Entiendo que
“mutableList” es una lista que tú previamente has creado no?

Saludos

MARCOS 10 NOVIEMBRE, 2017 / CONTESTAR

Hola Gracias por responder tan rápido.

Lo que ocurría es que no acababa de entender si el primer


argumento correspondía siempre al indice, y el segundo al
valor, entonces. Ya lo tengo claro.

En java no existen este tipo de for o al menos no lo s he


usado, hay que ir adaptándonos ^^

Saludos!

ARIS Autor del artículo 10 NOVIEMBRE,


2017 / CONTESTAR

https://cursokotlin.com/capitulo-10-listas-en-kotlin/ 7/11
07-11-2018 Capítulo 10 - Listas en Kotlin - Curso Kotlin Para android

Adaptarse o morir haha. Cualquier otra duda por aquí


ando

NIKY 11 ENERO, 2018 / CONTESTAR

muchas gracias…
en serio me ha sido muy útil
aprendí muchísimo y me ayudo en algunas dudas que tenia

AIMAR 22 ABRIL, 2018 / CONTESTAR

Hola Aris! Muchas gracias por tu cursillo, con el ayudas mucho a la


comunidad.
Una cosa que quizas no haya entendido bien el concepto… En las
listas mutables las declaras como “val” ¿no se deberian declarar como
“var”?

Saludos!

ARIS Autor del artículo 22 ABRIL, 2018 / CONTESTAR

Tienes toda la razón, fallo mío

Muchas gracias por reportar el error!

https://cursokotlin.com/capitulo-10-listas-en-kotlin/ 8/11
07-11-2018 Capítulo 10 - Listas en Kotlin - Curso Kotlin Para android

DEJA UN COMENTARIO

COMENTARIO

NOMBRE *

CORREO ELECTRÓNICO *

WEB

No soy un robot
reCAPTCHA
Privacidad - Condiciones

PUBLICAR COMENTARIO

https://cursokotlin.com/capitulo-10-listas-en-kotlin/ 9/11
07-11-2018 Capítulo 10 - Listas en Kotlin - Curso Kotlin Para android

Buscar …

BUSCAR

C O M PA R T I R

E T I Q U E TA S

android android studio kotlin aprender kotlin capitulo 2 capitulo 3 capítulo 6 capítulo 7

concatenación kotlin condiciones en kotlin curso android en kotlin curso android kotlin

curso de programacion android en kotlin curso de programación


kotlin curso de programación kotlin en español
curso kotlin curso kotlin en español curso
programacion android en kotlin curso programacion kotlin en español
curso programación kotlin de nir variables kotlin ejecutar .kt expresión when
funciones en kotlin hello world en kotlin if else en kotlin if en kotlin Instalar IntelliJ IDEA para Kotlin

instalar kotlin introducción a kotlin intrucciones condicionales en kotlin kotlin kotlin en español kotlin
lenguaje funcional kotlin switch operaciones aritmeticas kotlin parametros de entrada en kotlin parametros

de salida kotlin que es kotlin switch en kotlin tutorial kotlin usar variables kotlin var variables variables en
kotlin when en kotlin
https://cursokotlin.com/capitulo-10-listas-en-kotlin/ 10/11
07-11-2018 Capítulo 10 - Listas en Kotlin - Curso Kotlin Para android

Copyright © 2018 Curso Kotlin Para android – Tema OnePress hecho por
FameThemes

https://cursokotlin.com/capitulo-10-listas-en-kotlin/ 11/11
07-11-2018 Capítulo 11 - Configurando Android Studio para Kotlin - Curso Kotlin Para android

CURSO KOTLIN PARA ANDROID


Aprende a programar en el lenguaje del futuro

QUIEN SOY CURSO PROGRAMACIÓN ANDROID EN KOTLIN

CONTACTO

Capítulo 11 – Con gurando Android Studio para


Kotlin
PÚBLICADO EN 8 JULIO, 2017 POR ARIS

https://cursokotlin.com/configurando-android-studio-para-kotlin/ 1/13
07-11-2018 Capítulo 11 - Configurando Android Studio para Kotlin - Curso Kotlin Para android

Después de hacer 10 capítulos sobre introducción al Kotlin, creo que es el momento de


empezar con Android, que era la idea principal cuando creé el blog. El curso de introducción se
irá desarrollando también, pero a un ritmo más lento.

Con gurando Android Studio


Ahora que empezamos con Android, vamos a cambiar de IDE. Será de la misma empresa
(JetBrains) pero enfocado a Android.

Android Studio es un IDE muy completo, pero su versión estable todavía no soporta kotlin a no
ser que hagamos una serie de pasos, así que he optado por empezar con la versión canary.
Android Studio Canary es una versión especial que va recibiendo actualizaciones antes que la
versión estable, por lo que puede tener algún fallo, pero accedemos a las novedades antes. Se
pueden tener las 2 versiones a la vez, la canary y la estable.

Descargando e instalando la versión canary


Para acceder a esta versión solo tenemos que ir a este link y bajarnos la última versión.

https://cursokotlin.com/configurando-android-studio-para-kotlin/ 2/13
07-11-2018 Capítulo 11 - Configurando Android Studio para Kotlin - Curso Kotlin Para android

Aceptamos los términos y empezará la descarga.

En Windows
Una vez haya terminado debemos descomprimir el archivo y renombrar la carpeta a un nombre
que nos sea fácil de recordar, por ejemplo “android-canary” y guardarlo en una ruta fácil de
recordar. Yo recomiendo dejarlo en la ruta de aplicaciones por defecto, sea cual sea tu sistema
operativo.

Luego para abrir la aplicación entramos en android-canary\bin\, e inicia studio64.exe (o


studio.exe si tu arquitectura es de 32 bits).

En Mac
Descarga la aplicación

Una vez terminado descomprímela y haz doble click en ella

Arrastra el archivo a la carpeta Aplicaciones y ejecútala.

En Linux
Descarga la aplicación

Descomprime el .ZIP

Renombra la carpeta

Abre un terminal  carpetaAndroid\bin\ y ejecuta studio.sh

Con gurando Android Studio Canary version


Una vez descargado y abierto por primera vez nos saldrá un aviso de que si queremos importar
la con guración de android studio. Si tenéis la versión estable instalada y trabajáis con ella os
recomiendo importarla para que todo siga igual. Yo seleccionaré “Do not import settings” para
mostraros todo el proceso.

https://cursokotlin.com/configurando-android-studio-para-kotlin/ 3/13
07-11-2018 Capítulo 11 - Configurando Android Studio para Kotlin - Curso Kotlin Para android

Pulsamos OK y nos saldrá una pantalla que nos da la bienvenida, pulsamos en Next.

Ahora debemos seleccionar si queremos la con guración standar o no, en este curso seguiré la
custom para recomendaros lo que a mi punto de vista hay que poner y que no.

https://cursokotlin.com/configurando-android-studio-para-kotlin/ 4/13
07-11-2018 Capítulo 11 - Configurando Android Studio para Kotlin - Curso Kotlin Para android

Lo primero que nos mostrará será la opción de elegir diseño, como defecto pone el “IntelliJ“. Yo
trabajo 8 horas al día con este programa y os recomiendo muchísimo la opción “Darcula” si vais
a dedicarle muchas horas, pues el fondo blanco acaba cansando mucho la vista.

https://cursokotlin.com/configurando-android-studio-para-kotlin/ 5/13
07-11-2018 Capítulo 11 - Configurando Android Studio para Kotlin - Curso Kotlin Para android

El siguiente paso será elegir los componentes del SDK, si vais a usar el emulador para las
aplicaciones tenéis que seleccionarlo, sino podéis obviarlo. Yo como tengo la otra versión, solo
me sale el API 26, si no tenéis ninguna por lo menos poned desde android 4.4 hasta android 7.

https://cursokotlin.com/configurando-android-studio-para-kotlin/ 6/13
07-11-2018 Capítulo 11 - Configurando Android Studio para Kotlin - Curso Kotlin Para android

Si hemos seleccionado la opción del emulador, aquí podemos elegir la cantidad de ram que le
vamos a permitir usar. Como norma general te recomiendan 2GB, pero a mi nunca me ha ido
bien así. Recomiendo al menos 4GB pero NUNCA más de la mitad de la ram del equipo.

https://cursokotlin.com/configurando-android-studio-para-kotlin/ 7/13
07-11-2018 Capítulo 11 - Configurando Android Studio para Kotlin - Curso Kotlin Para android

Pulsamos en Finish y empezará a descargar todos los componentes necesarios.

https://cursokotlin.com/configurando-android-studio-para-kotlin/ 8/13
07-11-2018 Capítulo 11 - Configurando Android Studio para Kotlin - Curso Kotlin Para android

Una vez nalice ya tendremos nuestro Android Studio listo para trabajar con Kotlin.

Comparte
0 Like 1 Share Tweet

PUBLICADO EL CURSO DE ANDROID EN KOTLIN

ETIQUETADO CON ANDROID STUDIO KOTLIN, CURSO ANDROID KOTLIN,


CURSO DE PROGRAMACION ANDROID EN KOTLIN, CURSO KOTLIN EN
ESPAÑOL, CURSO PROGRAMACION ANDROID EN KOTLIN, INSTALANDO
ANDROID STUDIO PARA KOTLIN, INSTALAR ANDROID STUDIO CANARY
VERSION, INSTALAR CANARY VERSION

https://cursokotlin.com/configurando-android-studio-para-kotlin/ 9/13
07-11-2018 Capítulo 11 - Configurando Android Studio para Kotlin - Curso Kotlin Para android

5 COMENTARIOS SOBRE “CAPÍTULO 11 –


CONFIGURANDO ANDROID STUDIO PARA KOTLIN”

UC BROWSER 13 SEPTIEMBRE, 2017 / CONTESTAR

He estado leyendo un rato tu blog, muy interesante todo, sigue así

LINEAGEEK 13 SEPTIEMBRE, 2017 / CONTESTAR

Interesante. Me ha encantado, muchas gracias.

OLIV 3 ENERO, 2018 / CONTESTAR

ya empieza lo mero bueno

JOSUE GONZALEZ 31 MAYO, 2018 / CONTESTAR

Sigue adelante no estas ayudando mucho.

DANNY AREVALO 27 AGOSTO, 2018 / CONTESTAR

https://cursokotlin.com/configurando-android-studio-para-kotlin/ 10/13
07-11-2018 Capítulo 11 - Configurando Android Studio para Kotlin - Curso Kotlin Para android

Esta super tu blog, he aprendido muchísimo gracias por el gran


aporte. (Y)

DEJA UN COMENTARIO

COMENTARIO

NOMBRE *

CORREO ELECTRÓNICO *

WEB

No soy un robot
reCAPTCHA
Privacidad - Condiciones

https://cursokotlin.com/configurando-android-studio-para-kotlin/ 11/13
07-11-2018 Capítulo 11 - Configurando Android Studio para Kotlin - Curso Kotlin Para android

PUBLICAR COMENTARIO

Buscar …

BUSCAR

C O M PA R T I R

E T I Q U E TA S

android android studio kotlin aprender kotlin capitulo 2 capitulo 3 capítulo 6 capítulo 7

concatenación kotlin condiciones en kotlin curso android en kotlin curso android kotlin

curso de programacion android en kotlin curso de programación


kotlin curso de programación kotlin en español
curso kotlin curso kotlin en español curso
programacion android en kotlin curso programacion kotlin en español
curso programación kotlin de nir variables kotlin ejecutar .kt expresión when
funciones en kotlin hello world en kotlin if else en kotlin if en kotlin Instalar IntelliJ IDEA para Kotlin

https://cursokotlin.com/configurando-android-studio-para-kotlin/ 12/13
07-11-2018 Capítulo 11 - Configurando Android Studio para Kotlin - Curso Kotlin Para android

instalar kotlin introducción a kotlin intrucciones condicionales en kotlin kotlin kotlin en español kotlin
lenguaje funcional kotlin switch operaciones aritmeticas kotlin parametros de entrada en kotlin parametros

de salida kotlin que es kotlin switch en kotlin tutorial kotlin usar variables kotlin var variables variables en
kotlin when en kotlin

Copyright © 2018 Curso Kotlin Para android – Tema OnePress hecho por
FameThemes

https://cursokotlin.com/configurando-android-studio-para-kotlin/ 13/13
07-11-2018 Capítulo 12 - Desarrollando nuestra primera app en Kotlin [Primera parte] - Curso Kotlin Para android

CURSO KOTLIN PARA ANDROID


Aprende a programar en el lenguaje del futuro

QUIEN SOY CURSO PROGRAMACIÓN ANDROID EN KOTLIN

CONTACTO

Capítulo 12 – Desarrollando nuestra primera app


en Kotlin [Primera parte]
PÚBLICADO EN 12 JULIO, 2017 POR ARIS

Nuestra primera App


https://cursokotlin.com/capitulo-12-desarrollando-nuestra-primera-app-en-kotlin-primera-parte/ 1/19
07-11-2018 Capítulo 12 - Desarrollando nuestra primera app en Kotlin [Primera parte] - Curso Kotlin Para android

Una vez con gurado nuestro entorno, lo que vamos a hacer será un proyecto nuevo, para ello,
abriremos Android Studio y haremos click en “Start a new Android Studio project”

Cuando lo hagamos, la siguiente pantalla nos pedirá una serie de datos, el primero será el
nombre de la aplicación, que deberá ser claro y conciso. Como es tradición en el mundillo,
nuestra primera app se llamará “Hello World”.

A continuación pondremos el “Company domain”, este campo se usa para generar un paquete,
este es un identi cador único para cuando publiquemos nuestra app en la store de Google Play.
Para el dominio, la estructura básica que se suele usar es com.tunombre o
com.nombredetucompañía, para que, junto a el nombre de la app terminen de generar nuestro
identi cador. Como podéis ver en el nombre del paquete, está todo en minúsculas, esto es así
para evitar con ictos con clases e interfaces. Luego, seleccionamos el directorio donde
guardaremos la aplicación, y para nalizar es imperativo marcar la opción “include Kotlin
support“.

https://cursokotlin.com/capitulo-12-desarrollando-nuestra-primera-app-en-kotlin-primera-parte/ 2/19
07-11-2018 Capítulo 12 - Desarrollando nuestra primera app en Kotlin [Primera parte] - Curso Kotlin Para android

Al pulsar sobre next, nos saldrán unas nuevas opciones, que nos permitirán seleccionar para
que dispositivo queremos desarrollar. En este curso os enseñaré para a programar para móviles
y tablets, pero una vez lo hayáis terminado, tendréis conocimientos más que de sobra para
hacer frente a las otras plataformas.

Para elegir en SDK mínimo (mínima versión en la que nuestra app funcionará), debemos pensar
a cuanto público queremos llegar. Una app que se desarrolle en Android 6, solo podrá acceder a
un 4’7% del sector total (para verlo haz click en “Help me choose”). Aunque cada uno usa sus
truquitos, yo suelo empezar por  la API 15, que corresponde a más del 97% de los móviles que
están funcionando a día de hoy, ya luego si por cualquier petición del cliente, hay que añadir
una funcionalidad nueva no permitida en dicha versión, la subo.

https://cursokotlin.com/capitulo-12-desarrollando-nuestra-primera-app-en-kotlin-primera-parte/ 3/19
07-11-2018 Capítulo 12 - Desarrollando nuestra primera app en Kotlin [Primera parte] - Curso Kotlin Para android

A continuamos nos mostrará una pantalla con varias pantallas a elegir. Seleccionamos “Empty
Activity” y continuamos a la última pantalla en la que podemos seleccionar los nombres de la
Activity y el Layout, esto lo explicaré a continuación, así que por ahora dejaremos el nombre por
defecto, con las casillas marcadas y pulsamos en “ nish”.

¿Qué es una Activity?


Una vez generado el proyecto, estaremos delante de nuestra primera activity, llamada
MainActivity. Una Activity es cada una de las pantallas que ve el usuario, en ellas se declaran los
métodos (funciones) que se pueden hacer. Por ejemplo, imaginemos que la aplicación es de
cocina, pues una activity sería cortar las verduras, hervir, freír, etc. Las activities tienen dos
partes, la lógica y la visual (los layouts que veremos a continuación).

https://cursokotlin.com/capitulo-12-desarrollando-nuestra-primera-app-en-kotlin-primera-parte/ 4/19
07-11-2018 Capítulo 12 - Desarrollando nuestra primera app en Kotlin [Primera parte] - Curso Kotlin Para android

En la parte lógica, que la desarrollaremos en Kotlin, daremos respuesta a cada unas de las
interacciones del usuario. Si seguimos con el ejemplo anterior, imaginemos que el usuario pulsa
el botón de freír, este evento llegaría a nuestra clase y ahí ejecutamos la acción. No quiero
entrar más en detalle, porque lo veremos más tarde.

La activity es básicamente una clase kotlin (.kt) que extiende de AppCompatActivity, que tiene
los métodos necesarios para poder comunicarnos con Android. Así que por defecto siempre
tendremos la función “OnCreate” que será el encargado de crear nuestra actividad y asignarle un
layout.

¿Qué es un Layout?
El layout es la segunda parte de la actividad, la interfaz. En ella se agregarán los componentes
como los botones, imágenes y demás. Estos archivos son muy simples y se pueden completar
arrastrando los componentes o picándolos en XML.

Para acceder a él, debemos ir a la estructura del proyecto, que está en el lado izquierdo.

Con hacer doble click sobre el archivo se nos abrirá y veremos algo así.

https://cursokotlin.com/capitulo-12-desarrollando-nuestra-primera-app-en-kotlin-primera-parte/ 5/19
07-11-2018 Capítulo 12 - Desarrollando nuestra primera app en Kotlin [Primera parte] - Curso Kotlin Para android

Parece un poquito complicado al principio, pero una vez se explique se irá toda la di cultad. Lo
primero que tenemos es el código en XML que nos genera por defecto, como podemos ver, está
anidado. Tenemos un padre “android.support.constraint.ConstraintLayout” y dentro un “TextView”
que es un componente muy básico para mostrar texto no editable en la pantalla. A la derecha,
en las pestañas del lateral, hay una llamada “preview”, que si la pulsamos nos mostrará a
tiempo real el diseño de la vista.

Antes de continuar, vamos a cambiar a el padre para usar un layout más sencillo, así que
simplemente cambiamos “android.support.constraint.ConstraintLayout” por “RelativeLayout”.
Como podéis ver, la etiqueta que cierra la anidación también ha cambiado, porque hace
referencia al RelativeLayout. Así que nuestra vista quedaría así (he quitado varias líneas que
hacían referencia al constrainLayout, en un futuro lo veremos más a fondo).

https://cursokotlin.com/capitulo-12-desarrollando-nuestra-primera-app-en-kotlin-primera-parte/ 6/19
07-11-2018 Capítulo 12 - Desarrollando nuestra primera app en Kotlin [Primera parte] - Curso Kotlin Para android
1 <?xml version="1.0" encoding="utf-8"?>
2 <RelativeLayout
3     xmlns:android="http://schemas.android.com/apk/res/android"
4     xmlns:app="http://schemas.android.com/apk/res-auto"
5     xmlns:tools="http://schemas.android.com/tools"
6     android:layout_width="match_parent"
7     android:layout_height="match_parent"
8     tools:context="com.cursokotlin.helloworld.MainActivity">
9  
10     <TextView
11         android:layout_width="wrap_content"
12         android:layout_height="wrap_content"
13         android:text="Hello World!"
14         app:layout_constraintBottom_toBottomOf="parent"
15         app:layout_constraintLeft_toLeftOf="parent"
16         app:layout_constraintRight_toRightOf="parent"
17         app:layout_constraintTop_toTopOf="parent" />
18  
19 </RelativeLayout>

Ahora vamos a ver la parte más visual del layout, para ello, en la parte inferior izquierda,
veremos dos pestañas “Design” y “Text”, desde aquí podemos cambiar la forma de trabajar con
las vistas. Si nos vamos a Design, veremos que el código cambia por la vista y han aparecido
nuevas columnas.

Desde aquí, si podemos manipular los componentes que están dentro de la vista, e incluso
añadir nuevos. Para ello vamos a coger un botón de la caja de componentes que está en la
esquina superior izquierda.

https://cursokotlin.com/capitulo-12-desarrollando-nuestra-primera-app-en-kotlin-primera-parte/ 7/19
07-11-2018 Capítulo 12 - Desarrollando nuestra primera app en Kotlin [Primera parte] - Curso Kotlin Para android

https://cursokotlin.com/capitulo-12-desarrollando-nuestra-primera-app-en-kotlin-primera-parte/ 8/19
07-11-2018 Capítulo 12 - Desarrollando nuestra primera app en Kotlin [Primera parte] - Curso Kotlin Para android

Simplemente pulsamos en el botón y lo arrastramos a la parte de la vista que queramos, por


ejemplo abajo del todo.

Una vez lo hagamos, y mientras lo tengamos jado, nos aparecerán una serie de campos en el
lateral derecho, estos, son los atributos del botón. Los podemos editar desde aquí o desde el
XML. Como esta es la primera práctica, lo haremos desde aquí, pero en las siguientes lo
haremos desde el código, pues es la forma más óptima para dejar nuestras vistas impolutas.

Los tres atributos básicos que debemos añadir:

ID: Es el identi cador único del componente, con él, podremos de nir en nuestra activity
dicho componente para poder trabajar con él. Como es un botón que nos hará cambiar de
activity, lo llamaré “btnChangeActivity”.

https://cursokotlin.com/capitulo-12-desarrollando-nuestra-primera-app-en-kotlin-primera-parte/ 9/19
07-11-2018 Capítulo 12 - Desarrollando nuestra primera app en Kotlin [Primera parte] - Curso Kotlin Para android

layout_width: Este campo hace referencia a la anchura del componente, con este campo
(que es obligatorio), podemos jar la anchura a través de dos opciones. “Wrap_content” que
añadirá una anchura lo su cientemente grande para incluir todo el contenido (en este caso
el texto “BUTTON”) y “Mach_parent” que cogerá todo el espacio que su padre (en este caso el
RelativeLayout) le permita.

layout_height: Permite asignarle la altura a cada componente. Sigue el mismo


comportamiento que el “layout_width”.

Para este ejercicio dejaremos los dos con “wrap_content” pero os animo a probar a añadirle el
“match_parent” a algunos de los componentes para que vayáis entendiendo el comportamiento.

Componentes básicos
Ahora que ya sabemos lo básico, vamos a añadir 2 componentes más. Un TextView y un
EditText. No deberíais tener problema en hacerlo. La idea es un TextView que te pregunte el
nombre y un EditText donde poder escribirlo. Simplemente debemos arrastar los dos
componentes al centro de la pantalla (uno debajo de otro) y le asignaremos un ID. Los
componentes se llaman “TextView” y “Plain Text” en la columna. Deberíamos tener algo así al
acabar.

https://cursokotlin.com/capitulo-12-desarrollando-nuestra-primera-app-en-kotlin-primera-parte/ 10/19
07-11-2018 Capítulo 12 - Desarrollando nuestra primera app en Kotlin [Primera parte] - Curso Kotlin Para android

https://cursokotlin.com/capitulo-12-desarrollando-nuestra-primera-app-en-kotlin-primera-parte/ 11/19
07-11-2018 Capítulo 12 - Desarrollando nuestra primera app en Kotlin [Primera parte] - Curso Kotlin Para android

Un poquillo feo ¿No? Lo arreglaremos yendo a el XML y asignando algunos atributos.

Lo primero que haremos será añadir los atributos a los dos nuevos componentes, pero esta vez
desde el código, empezaremos por el TextView. Para ello simplemente hay que añadir la
siguiente línea:

1 android:id="@+id/tvName"

La explicación es muy simple, lo primero que hacemos es llamar a Android, accediendo a la


propiedad ID. Acto seguido, con el @+id estamos creando una referencia del componente en el
archivo R.java de android (Lo expliquaré en el siguiente punto) y para acabar le damos el
nombre que queramos, en este caso, al TextView que nos preguntará el nombre, lo llamaremos
tvName. Aunque se puede añadir en cualquier parte del XML, la línea del ID como norma
general en las prácticas del buen uso, suele ir la primera.

Seguramente cuando cambiaste el nombre del id, el TextView se fue para arriba del todo y se
marcó una línea roja en el otro componente ¿Verdad? en la línea
“android:layout_below=”@+id/textView”” esto se debe a que al estar en un RelativeLayout,
debemos indicarle a cada componente donde va a estar. El layout_below lo que hace es decir
que dicho componente estará justo debajo del que tenga la ID llamada “textView”, pero como
ahora acabamos de renombrar el TextView a tvName, el EditText no encuentra ningún id con
dicha referencia, así que cambiaremos  android:layout_below=”@+id/textView” por
android:layout_below=”@+id/tvName” y todo volverá a su sitio.

Ahora habrá que cambiar el texto que trae por defecto por el que queremos. Así que
localizamos la línea “android:text=”TextView” y cambiamos el texto a “¿Cómo te llamas?”.

Ahora ya lo tendríamos listo, pero en comparación con el EditText, se ve bastante pequeño, así
que accederemos a un atributo más.

1 android:textAppearance="@style/TextAppearance.AppCompat.Title

Es muy parecida a las anteriores, textAppearance lo único que hace es decirle al componente que
su apariencia será controlada a través de un estilo. Un style o estilo es simplemente una serie
de atributos reutilizables, imaginemos que tenemos una App que tiene varios textos iguales
(fondo de un color, un tamaño de texto prede nido, etc), podemos añadir los mismos atributos
a cada uno de ellos, con los riesgos que conlleva (si luego hay que cambiar el color del texto,

https://cursokotlin.com/capitulo-12-desarrollando-nuestra-primera-app-en-kotlin-primera-parte/ 12/19
07-11-2018 Capítulo 12 - Desarrollando nuestra primera app en Kotlin [Primera parte] - Curso Kotlin Para android

habría que ir a todas las pantallas que llevasen textos y cambiarlos uno a uno) o podemos
asignarles un mismo estilo al que todos accederán, así si se cambia algo, automáticamente
todos los textos lo harían.

Así que lo único que hacemos es referencia al archivo style con el “@style” y luego el nombre de
dicho estilo. Nos habrá quedado algo así.

1 <TextView
2         android:id="@+id/tvName"
3         android:layout_width="wrap_content"
4         android:layout_height="wrap_content"
5         android:layout_centerHorizontal="true"
6         android:layout_centerVertical="true"
7         android:textAppearance="@style/TextAppearance.AppCompat.Title"
8         android:text="¿Cómo te llamas?" />

Ahora nos toca el EditText que sería hacer básicamente lo mismo, añadir un ID y listo. Este se
llamará etName. Y de paso comentaré un par de atributos que seguramente se nos habrán
generado automáticamente.

android:layout_below: Explicado anteriormente, cabe destacar que este atributo es solo


para los RelativeLayout y los que hereden de él. Además del below tenemos algunos muy
parecidos como layout_above, que haría lo mismo pero en vez de ponerse debajo, se
pondría encima.

android:layout_centerHorizontal=”true”: Nos pondrá siempre el componente en el centro


de la vista en el eje horizontal. Así aunque el móvil sea muy grande o muy pequeño siempre
se mantendrá centrado.

android:ems=”10”: Añade una anchura al EditText su ciente para que se vean X caracteres
en la pantalla. Por ejemplo ahora tenemos puesto 10, si se añaden más, irán
desapareciendo de la vista, probad a cambiar el número para que no os quede duda alguna.

android:inputType=”textPersonName”: El atributo inputType nos permite que una vez


hagamos click en el editText, el teclado que se muestre, esté adecuado al tipo de
información que veremos. Os pongo un pequeño ejemplo para entenderlo más fácil. Con
textPersonName el teclado que se mostraría sería así.

https://cursokotlin.com/capitulo-12-desarrollando-nuestra-primera-app-en-kotlin-primera-parte/ 13/19
07-11-2018 Capítulo 12 - Desarrollando nuestra primera app en Kotlin [Primera parte] - Curso Kotlin Para android

Pero si ahora cambiamos el valor a textWebEmailAddress se vería así.

La diferencia es casi ín ma, aquí se vería el @ y en el anterior no. Aunque sea un cambio tan
pequeño, estos pequeños detalles hacen que el usuario se sienta cómodo con nuestra app, así
que hay que cuidarlos.

Por último tenemos un text en el EditText. El problema de dicho atributo en este tipo de
componentes es que cuando hagamos click en él, ese texto tendremos que borrarlo para añadir
nuestro nombre por ejemplo, por eso los chicos de Google crearon un atributo muy cómodo,
android:hint=”Name” que hace básicamente lo mismo, pero cuando el usuario escriba, el texto
desaparecerá y no habrá que borrarlo primero. Así que nuestro XML una vez terminado se verá
así.

https://cursokotlin.com/capitulo-12-desarrollando-nuestra-primera-app-en-kotlin-primera-parte/ 14/19
07-11-2018 Capítulo 12 - Desarrollando nuestra primera app en Kotlin [Primera parte] - Curso Kotlin Para android

1 <?xml version="1.0" encoding="utf-8"?>


2 <RelativeLayout
3     xmlns:android="http://schemas.android.com/apk/res/android"
4     xmlns:tools="http://schemas.android.com/tools"
5     android:layout_width="match_parent"
6     android:layout_height="match_parent"
7     tools:context="com.cursokotlin.helloworld.MainActivity">
8  
9     <Button
10         android:id="@+id/btnChangeActivity"
11         android:layout_width="wrap_content"
12         android:layout_height="wrap_content"
13         android:layout_alignParentBottom="true"
14         android:layout_centerHorizontal="true"
15         android:text="Enviar" />
16  
17     <TextView
18         android:id="@+id/tvName"
19         android:layout_width="wrap_content"
20         android:layout_height="wrap_content"
21         android:layout_centerHorizontal="true"
22         android:layout_centerVertical="true"
23         android:textAppearance="@style/TextAppearance.AppCompat.Title"
24         android:text="¿Cómo te llamas?" />
25  
26     <EditText
27         android:id="@+id/etName"
28         android:layout_width="wrap_content"
29         android:layout_height="wrap_content"
30         android:layout_below="@+id/tvName"
31         android:layout_centerHorizontal="true"
32         android:ems="10"
33         android:inputType="textWebEmailAddress"
34         android:hint="Name" />
35  
36 </RelativeLayout>

Comparte
0 Like 2 Share Tweet

PUBLICADO EL CURSO DE ANDROID EN KOTLIN

ETIQUETADO CON ANDROID STUDIO KOTLIN, CREANDO APLICACION EN


KOTLIN, CURSO ANDROID KOTLIN, CURSO DE PROGRAMACION ANDROID EN

https://cursokotlin.com/capitulo-12-desarrollando-nuestra-primera-app-en-kotlin-primera-parte/ 15/19
07-11-2018 Capítulo 12 - Desarrollando nuestra primera app en Kotlin [Primera parte] - Curso Kotlin Para android

KOTLIN, CURSO KOTLIN EN ESPAÑOL, CURSO PROGRAMACION ANDROID EN


KOTLIN, DESARROLLAR APLICACION EN KOTLIN, QUE ES UN LAYOUT, QUE ES
UNA ACTIVITY

5 COMENTARIOS SOBRE “CAPÍTULO 12 –


DESARROLLANDO NUESTRA PRIMERA APP EN KOTLIN
[PRIMERA PARTE]”

Pingback: Capítulo 13 - Desarrollando nuestra primera app en Kotlin [Segunda parte] - Curso
Kotlin Para android

MARÍA R. 12 SEPTIEMBRE, 2017 / CONTESTAR

Todo muy bien redactado e interesante saludos desde Chile

PABLO SUAREZ 18 OCTUBRE, 2017 / CONTESTAR

Excelente! Muchas gracias por tu dedicación.


Saludos.

KIKE 31 OCTUBRE, 2017 / CONTESTAR

gracias!!!. Me sirvio de ayuda para entender los el xml y la relacion


con la vista

https://cursokotlin.com/capitulo-12-desarrollando-nuestra-primera-app-en-kotlin-primera-parte/ 16/19
07-11-2018 Capítulo 12 - Desarrollando nuestra primera app en Kotlin [Primera parte] - Curso Kotlin Para android

CARLOS 27 OCTUBRE, 2018 / CONTESTAR

¡Gracias!!! , muy útil, bien explicado y sobre todo breve

DEJA UN COMENTARIO

COMENTARIO

NOMBRE *

CORREO ELECTRÓNICO *

WEB

https://cursokotlin.com/capitulo-12-desarrollando-nuestra-primera-app-en-kotlin-primera-parte/ 17/19
07-11-2018 Capítulo 12 - Desarrollando nuestra primera app en Kotlin [Primera parte] - Curso Kotlin Para android

No soy un robot
reCAPTCHA
Privacidad - Condiciones

PUBLICAR COMENTARIO

Buscar …

BUSCAR

C O M PA R T I R

E T I Q U E TA S

android android studio kotlin aprender kotlin capitulo 2 capitulo 3 capítulo 6 capítulo 7

concatenación kotlin condiciones en kotlin curso android en kotlin curso android kotlin

curso de programacion android en kotlin curso de programación


kotlin curso de programación kotlin en español
curso kotlin curso kotlin en español curso
https://cursokotlin.com/capitulo-12-desarrollando-nuestra-primera-app-en-kotlin-primera-parte/ 18/19
07-11-2018 Capítulo 12 - Desarrollando nuestra primera app en Kotlin [Primera parte] - Curso Kotlin Para android

programacion android en kotlin curso programacion kotlin en español


curso programación kotlin de nir variables kotlin ejecutar .kt expresión when
funciones en kotlin hello world en kotlin if else en kotlin if en kotlin Instalar IntelliJ IDEA para Kotlin

instalar kotlin introducción a kotlin intrucciones condicionales en kotlin kotlin kotlin en español kotlin
lenguaje funcional kotlin switch operaciones aritmeticas kotlin parametros de entrada en kotlin parametros

de salida kotlin que es kotlin switch en kotlin tutorial kotlin usar variables kotlin var variables variables en
kotlin when en kotlin

Copyright © 2018 Curso Kotlin Para android – Tema OnePress hecho por
FameThemes

https://cursokotlin.com/capitulo-12-desarrollando-nuestra-primera-app-en-kotlin-primera-parte/ 19/19
07-11-2018 Capítulo 13 - Desarrollando nuestra primera app en Kotlin [Segunda parte] - Curso Kotlin Para android

CURSO KOTLIN PARA ANDROID


Aprende a programar en el lenguaje del futuro

QUIEN SOY CURSO PROGRAMACIÓN ANDROID EN KOTLIN

CONTACTO

Capítulo 13 – Desarrollando nuestra primera app


en Kotlin [Segunda parte]
PÚBLICADO EN 23 JULIO, 2017 POR ARIS

https://cursokotlin.com/capitulo-13-desarrollando-nuestra-primera-app-kotlin-segunda-parte/ 1/23
07-11-2018 Capítulo 13 - Desarrollando nuestra primera app en Kotlin [Segunda parte] - Curso Kotlin Para android

En la primera parte de este artículo terminamos de explicar un poquillo por encima las activities
y los layouts y terminamos de maquetar nuestra primera pantalla. Ahora es el momento de
conectar dicha interfaz con nuestra clase.

Conectando la vista al código


Lo primero que haremos será referencias nuestros componentes (en este caso el editText y el
botón) en el código. Para ello, Kotlin lo hace de un modo muy sencillo, simplemente tenemos
que usar la id que le asignamos a cada uno de los componentes en el capítulo anterior.

1     override fun onCreate(savedInstanceState: Bundle?) {


2         super.onCreate(savedInstanceState)
3         setContentView(R.layout.activity_main)
4         btnChangeActivity.setOnClickListener { checkValue() }
5     }
6  
7     fun checkValue(){
8         if(etName.text.toString().isEmpty()){
9             Toast.makeText(this, "El nombre no puede estar vacío", Toast
10         }else{
11             //Iremos a otra pantalla
12         }
13     }

Lo primero que hemos hecho ha sido llamar al botón, y diciéndole que cuando se produzca el
evento del pulsado sobre él que lance el método checkValue(). Esto lo hemos hecho con la
función setOnClickListener que es el encargado de estar “escuchando” hasta que el botón haya
sido pulsado.

El método checkValue() será el encargado de comprobar si el campo nombre está vacío. Si lo


está, lanzará un toast diciendo que no debe estar vació, sino iremos a la nueva pantalla,
pasándole el nombre, pero primero crearemos dicha pantalla.

Generando nuestra segunda activity


Ahora vamos a generar una segunda pantalla que será la que se abrirá cuando hayamos escrito
un nombre. Podríamos hacerlo en la misma pantalla, pero quiero hablaros de como pasar
información entre activities así que manos a la obra.

Para ello vamos a la ruta app/nombreDelPaquete/ y hacemos click derecho sobre él.
New/Activity/Empty Activity.

https://cursokotlin.com/capitulo-13-desarrollando-nuestra-primera-app-kotlin-segunda-parte/ 2/23
07-11-2018 Capítulo 13 - Desarrollando nuestra primera app en Kotlin [Segunda parte] - Curso Kotlin Para android

Nos saldrá una pantalla igual a la imagen y la dejaremos así, le hemos cambiado el nombre,
tenemos marcado que nos genere el layout y seleccionando el lenguaje Kotlin. Pulsamos en
Finish.

Una vez creada vamos a empezar maquetando la pantalla. Esta será muy sencilla para no
alargar mucho la entrada.

Lo primero que vamos a hacer será cambiar el ConstrantLayout por un RelativeLayout como
hicimos con la otra vista, le pondremos un fondo y en el centro habrá un texto dándonos la
bienvenida. En la parte inferior un botón para volver a la otra pantalla.

https://cursokotlin.com/capitulo-13-desarrollando-nuestra-primera-app-kotlin-segunda-parte/ 3/23
07-11-2018 Capítulo 13 - Desarrollando nuestra primera app en Kotlin [Segunda parte] - Curso Kotlin Para android

1 <?xml version="1.0" encoding="utf-8"?>


2 <RelativeLayout
3     xmlns:android="http://schemas.android.com/apk/res/android"
4     xmlns:tools="http://schemas.android.com/tools"
5     android:layout_width="match_parent"
6     android:layout_height="match_parent"
7     tools:context="com.cursokotlin.helloworld.ShowNameActivity"
8     android:background="@color/dark_blue">
9  
10     <TextView
11         android:id="@+id/tvGreeting"
12         android:layout_width="wrap_content"
13         android:layout_height="wrap_content"
14         android:textColor="@color/white"
15         android:text="@string/welcome"
16         android:layout_centerInParent="true"
17         android:textSize="30sp"/>
18  
19     <Button
20         android:id="@+id/btnBack"
21         android:layout_width="wrap_content"
22         android:layout_height="wrap_content"
23         android:text="@string/back"
24         android:layout_centerHorizontal="true"
25         android:layout_alignParentBottom="true"/>
26  
27 </RelativeLayout>

Aunque sea muy sencillo, he añadido algunas cositas que quiero comentar. Para empezar, el
padre tiene un atributo android:background=”@Color/dark_blue” que si lo ponéis os va a dar
error. Eso se debe a que el color “dark_blue” lo he creado en el archivo colors, y será lo que
tengáis que hacer ahora, porque aunque se pueda meter el color ahí directamente (en código
hexadecimal) lo correcto es hacerlo en dicho chero por si un día tenemos que cambiar el color
base de una app no tengamos que hacerlo en cada una de las pantallas, sino cambiando solo el
color desde ahí. Así que vamos a app/res/values/colors y añadimos los dos colores que he
creado.

1 <color name="dark_blue">#dc3157ff</color>
2 <color name="white">#ffffff</color>

Para poder cambiar el color solo hay que cambiar el código hexadecimal, la forma más fácil es
haciendo click en el cuadradito del lateral izquierdo que contiene cada recurso, y desde ahí
seleccionar el nuevo color.

https://cursokotlin.com/capitulo-13-desarrollando-nuestra-primera-app-kotlin-segunda-parte/ 4/23
07-11-2018 Capítulo 13 - Desarrollando nuestra primera app en Kotlin [Segunda parte] - Curso Kotlin Para android

Y al igual que ha pasado con los colores los textos están referenciados en el archivo String, de
esto hablaremos más adelante, pero voy a explicar lo básico.

Vamos a app/res/values/strings.xml y tendremos que añadir cada uno de los textos que usemos
con una etiqueta que será la referencia. Quedaría así.

1 <string name="welcome">welcome %s</string>


2 <string name="back">volver</string>

Os estaréis preguntando que signi ca el %s que hay en la string “welcome”. Ese parámetro vale
para que Android entienda que el %s será sustituido por un texto que todavía desconocemos.
Así que cuando estemos en la segunda pantalla y se esté creando la vista, se lo tenemos que
pasar.

Comunicación entre pantallas


Ahora volvamos a la clase MainActivity.kt

En el método checkValue(), en la condición else, iremos a nuestra nueva actividad y para ello
usaremos un Intent. Un Intent es un objeto que contiene instrucciones con las cuales android
se comunica.

1 fun checkValue(){
2         if(etName.text.toString().isEmpty()){
3             Toast.makeText(this, "El nombre no puede estar vacío", Toast.
4         }else{
5             val intent = Intent(this, ShowNameActivity::class.java)
6             intent.putExtra("name", etName.text.toString())
7             startActivity(intent)
8         }
9     }

Vamos a explicar un poquito más a fondo que hemos

1 val intent = Intent(this, ShowNameActivity::class.java)

Aquí creamos el intent, le tenemos que pasar el contexto (this) y luego la pantalla a la que
queremos ir, en este caso ShowNameActivity.

https://cursokotlin.com/capitulo-13-desarrollando-nuestra-primera-app-kotlin-segunda-parte/ 5/23
07-11-2018 Capítulo 13 - Desarrollando nuestra primera app en Kotlin [Segunda parte] - Curso Kotlin Para android

1 intent.putExtra("name", etName.text.toString())

El intent tiene la posibilidad de añadirle “extras”, que no son más que datos para recuperar en
otra parte de la aplicación. Para poder recuperarlos hay que ponerles una clave a dichos datos.
En este caso estoy pasando el nombre que el usuario escribió ( etName.text.toString() ) y lo estoy
pasando con la clave name. con esto hacemos que cuando llegue el intent a la otra pantalla,
solo tenga que buscar si hay algún valor con la clave name, y nos devolverá el nombre.

Para nalizar llamamos a la función starActivity(intent) que nos lanzará la actividad declarada en
el intent que le pasamos.

Recuperando valores del intent


Ya tenemos casi acabada nuestra aplicación, ahora debemos ir a ShowNameActivity.kt,
recuperar el nombre y pintarlo.

1 class ShowNameActivity : AppCompatActivity() {


2  
3     override fun onCreate(savedInstanceState: Bundle?) {
4         super.onCreate(savedInstanceState)
5         setContentView(R.layout.activity_show_name)
6         getAndShowName()
7         btnBack.setOnClickListener { onBackPressed() }
8     }
9  
10     fun getAndShowName(){
11         val bundle = intent.extras
12         val name = bundle.get("name")
13         tvGreeting.text = getString(R.string.welcome, name)
14     }
15 }

Cuando se lanza esta actividad hará dos cosas, la primera será llamar al método que hemos
creado getAndshowName() que sacará del bundle (un objeto dentro del intent donde almacena la
información) el nombre a través de la clave “name“.

Ahora que tenemos el nombre, accedemos al TextView y le ponemos el texto que deseamos, en
este caso, como es una String necesitaremos la función
getString(R.string.nombreDeNuestraString) y recordad que tenía el %s por lo que añadimos una
coma y el valor por el que queremos sustituirlo, en este caso el nombre.

Para nalizar al botón le hemos añadido otro listener que ejecutará la función onBackPresses()
cuando se pulse, que lo que hace es volver a la actividad anterior.

https://cursokotlin.com/capitulo-13-desarrollando-nuestra-primera-app-kotlin-segunda-parte/ 6/23
07-11-2018 Capítulo 13 - Desarrollando nuestra primera app en Kotlin [Segunda parte] - Curso Kotlin Para android

Ahora basta con ir a run/run ‘app’ para lanzar nuestra aplicación. Nos saldrá una imagen similar
a esta, donde podremos seleccionar un emulador (trae alguno por defecto, sino lo crearemos) o
algún móvil si lo tenemos con gurado y conectado.

 Seleccionamos el que queremos y ya tendremos nuestra primera aplicación lista.

https://cursokotlin.com/capitulo-13-desarrollando-nuestra-primera-app-kotlin-segunda-parte/ 7/23
07-11-2018 Capítulo 13 - Desarrollando nuestra primera app en Kotlin [Segunda parte] - Curso Kotlin Para android

https://cursokotlin.com/capitulo-13-desarrollando-nuestra-primera-app-kotlin-segunda-parte/ 8/23
07-11-2018 Capítulo 13 - Desarrollando nuestra primera app en Kotlin [Segunda parte] - Curso Kotlin Para android

https://cursokotlin.com/capitulo-13-desarrollando-nuestra-primera-app-kotlin-segunda-parte/ 9/23
07-11-2018 Capítulo 13 - Desarrollando nuestra primera app en Kotlin [Segunda parte] - Curso Kotlin Para android

https://cursokotlin.com/capitulo-13-desarrollando-nuestra-primera-app-kotlin-segunda-parte/ 10/23
07-11-2018 Capítulo 13 - Desarrollando nuestra primera app en Kotlin [Segunda parte] - Curso Kotlin Para android

https://cursokotlin.com/capitulo-13-desarrollando-nuestra-primera-app-kotlin-segunda-parte/ 11/23
07-11-2018 Capítulo 13 - Desarrollando nuestra primera app en Kotlin [Segunda parte] - Curso Kotlin Para android

https://cursokotlin.com/capitulo-13-desarrollando-nuestra-primera-app-kotlin-segunda-parte/ 12/23
07-11-2018 Capítulo 13 - Desarrollando nuestra primera app en Kotlin [Segunda parte] - Curso Kotlin Para android

Comparte
0 Like 2 Share Tweet

PUBLICADO EL CURSO DE ANDROID EN KOTLIN

ETIQUETADO CON APRENDER KOTLIN, CURSO DE PROGRAMACIÓN KOTLIN,


CURSO DE PROGRAMACIÓN KOTLIN EN ESPAÑOL, CURSO KOTLIN, CURSO
KOTLIN EN ESPAÑOL, CURSO PROGRAMACION ANDROID EN KOTLIN,
DESARROLLANDO NUESTRA PRIMERA APP SEGUNDA PARTE, HELLO WORLD EN
KOTLIN

18 COMENTARIOS SOBRE “CAPÍTULO 13 –


DESARROLLANDO NUESTRA PRIMERA APP EN KOTLIN
[SEGUNDA PARTE]”

CYBERIUS 14 OCTUBRE, 2017 / CONTESTAR

Hola! intento usar la funcion checkValue pero kotlin no la reconoce,


cual seria la otra manera de validar que mis editText no esten vacios?

https://cursokotlin.com/capitulo-13-desarrollando-nuestra-primera-app-kotlin-segunda-parte/ 13/23
07-11-2018 Capítulo 13 - Desarrollando nuestra primera app en Kotlin [Segunda parte] - Curso Kotlin Para android

ARIS Autor del artículo 15 OCTUBRE, 2017 / CONTESTAR

La función checkValue no la reconoce porque la tenemos que


crear nosotros. Si te jas en el código anterior está hecha.

fun checkValue(){
if(etName.text.toString().isEmpty()){
Toast.makeText(this, “El nombre no puede estar vacío”,
Toast.LENGTH_SHORT).show()
}else{
val intent = Intent(this, ShowNameActivity::class.java)
intent.putExtra(“name”, etName.text.toString())
startActivity(intent)
}
}

OSCAR 16 OCTUBRE, 2017 / CONTESTAR

Como haria para que en lugar de tener un boton “Volver” este Activity
tenga un contador interno que a los “x” segundos regrese
automaticamente a la pantalla anterior?

ARIS Autor del artículo 17 OCTUBRE, 2017 / CONTESTAR

Buenas, sería tan sencillo como crear una variable del objeto
countDownTimer

var countdown = object: CountDownTimer(1000, 100) {


override fun onTick(l: Long) {
}

https://cursokotlin.com/capitulo-13-desarrollando-nuestra-primera-app-kotlin-segunda-parte/ 14/23
07-11-2018 Capítulo 13 - Desarrollando nuestra primera app en Kotlin [Segunda parte] - Curso Kotlin Para android

override fun onFinish() {


nish()
}
}

Donde 1000 son los milisegundos para que pase por el método
onFinish() y 100 son los milisegundos que tardará cada vez en
pasar por el método onTick().

Eso irá en la parte superior junto a las variables (fíjate que


dentro del onFinish está puesto que se cierre la activity).

Para terminar en la función onCreate de dicha activity solo


tenemos que llamar a la variable e inicializarla.

countdown.start()

Saludos

PABLO 21 OCTUBRE, 2017 / CONTESTAR

Hola Aris, llevo un buen rato intentando, si éxito, utilizar el código


para iniciar una nueva Activity pero desde una nueva clase, no desde
la principal.
El editor me marca un error en el comando Intent y startActivity.

package com.example.pablo.myapplication
import android.content.Intent

class justaclass {

fun Start_Activity() {

val intent = Intent(this, Main2Activity::class.java)


startActivity(intent)
}
}
https://cursokotlin.com/capitulo-13-desarrollando-nuestra-primera-app-kotlin-segunda-parte/ 15/23
07-11-2018 Capítulo 13 - Desarrollando nuestra primera app en Kotlin [Segunda parte] - Curso Kotlin Para android

Tengo entendido que se debe a que mi clase no implementa un


contexto ¿a que se re ere?

Gracias por tu tiempo!

ARIS Autor del artículo 21 OCTUBRE, 2017 / CONTESTAR

Buenos días! Parece que lo que has creado es una clase y no una
activity. Recuerda que una activity después del nombre de la
clase extiende de AppCompatActivity así que deberías cambiar
“class justaclass {” por “class justaclass : AppCompatActivity(){”

Y recuerda que tendrás que meter el método onCreate.

override fun onCreate(savedInstanceState: Bundle?) {


super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

Saludos

PABLO 22 OCTUBRE, 2017 / CONTESTAR

Muchas Gracias ARIS, mejor que Stack Over ow!


Saludos!

XAVIER 8 FEBRERO, 2018 / CONTESTAR

https://cursokotlin.com/capitulo-13-desarrollando-nuestra-primera-app-kotlin-segunda-parte/ 16/23
07-11-2018 Capítulo 13 - Desarrollando nuestra primera app en Kotlin [Segunda parte] - Curso Kotlin Para android

hola,

puedes detallar todo el programa completo del activity main y activity


show name?
me da error al darle al run.

Muchas gracias.

ARIS Autor del artículo 8 FEBRERO, 2018 / CONTESTAR

Buenas compi, puedes poner el error?

XAVIER 12 FEBRERO, 2018 / CONTESTAR

El error a aparecido al generar la activity.show.name.xml


AAPT2 error: check logs for details

con la activiry.main.xml sola, funciona perfectamente.

ARIS Autor del artículo 12 FEBRERO, 2018 / CONTESTAR

Necesito ver el error del log compi!

VICTOR 28 FEBRERO, 2018 / CONTESTAR

https://cursokotlin.com/capitulo-13-desarrollando-nuestra-primera-app-kotlin-segunda-parte/ 17/23
07-11-2018 Capítulo 13 - Desarrollando nuestra primera app en Kotlin [Segunda parte] - Curso Kotlin Para android

Hola, buenos dias excelente tutorial, presento la version de Android


studio 3.0.1 amigo tengo errores que me arroja el MainActivity.kt

package com.example.leon.primera

import android.support.v7.app.AppCompatActivity
import android.os.Bundle

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {


super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

fun checkValue(){
if(etName.text.toString().isEmpty()){
Toast.makeText(this, “El nombre no puede estar vacío”,
Toast.LENGTH_SHORT).show()
}else{
val intent = Intent(this, ShowNameActivity::class.java)
intent.putExtra(“name”, etName.text.toString())
startActivity(intent)
}
}
}
me coloca en rojo el etName diciendo Unresolved reference: etName
Toast Unresolved reference: Toast y en Intent igual Unresolved
reference: Intent

Veri que y tengo bien declarado el etName.

PD: soy absolutamente nuevo en esto amigo, gracias si puede


ayudarme y de nuevo excelente material de aprendizaje

https://cursokotlin.com/capitulo-13-desarrollando-nuestra-primera-app-kotlin-segunda-parte/ 18/23
07-11-2018 Capítulo 13 - Desarrollando nuestra primera app en Kotlin [Segunda parte] - Curso Kotlin Para android

ARIS Autor del artículo 28 FEBRERO, 2018 / CONTESTAR

Buenas, tienes que importar las dependencias, para ello porte


encima de las palabras en rojo, e importa su dependencia
(alt+intro o cmd+intro dependiendo de tu sistema operativo).
Saludos!

JIMMY 21 MARZO, 2018 / CONTESTAR

Muchas gracias por tomarte tu tiempo y realizar estos tutoriales.


Tengo años programando en android y me decidi aprender kotlin
para dar el salto y tus tutoriales son los mejores que he visto hasta
ahora. Gracias

MAURICIO 6 ABRIL, 2018 / CONTESTAR

Hola, excelente tutorial, quiero empezar mi primera app nativa con


Kotlin, tengo la ultima versión de androd studio (v3.1), mi pregunta
muy de novatos es la siguiente.

– Cree un nuevo proyecto con una actividad vacia


Al nuevo proyecto agregue 3 actividades: Tabbed Activity, Navigation
Drawer Activity, Botton Navigation Activity

Mi pregunta es como hago para que aparezcan en la pantalla del


proyecto o actividad principal estas 3 nuevas actividades?

Muchas gracias por la gran ayuda.

https://cursokotlin.com/capitulo-13-desarrollando-nuestra-primera-app-kotlin-segunda-parte/ 19/23
07-11-2018 Capítulo 13 - Desarrollando nuestra primera app en Kotlin [Segunda parte] - Curso Kotlin Para android

ARIS Autor del artículo 6 ABRIL, 2018 / CONTESTAR

Buenas, dado que eso no es de este capítulo (todavía no hemos


llegado) no puedo detallarlo en un solo comentario.

Un saludo

RAÚL 10 AGOSTO, 2018 / CONTESTAR

Hola, Aris. Ojalá me puedas dar una respuesta a mi problema (estoy


comenzando con Kotlin). Necesito abrir un archivo de texto y usar su
contenido para rellenar un array, pero Android Studio (modo
emulador, Linux) no parece encontrar el archivo (“No such le or
directory”):

1) no importa en dónde lo ponga


2) no importa si uso toda la ruta (path) o sólo el nombre del archivo
3) no importa qué metodo use (inputStream, Bu eredReader, etc.)
3) no importa qué código de ejemplo haya encontrado en Internet

Te agradeceré enormemente tu colaboración.

ARIS Autor del artículo 13 AGOSTO, 2018 / CONTESTAR

Buenas, sin ver el código fuente me es imposible determinar el


fallo, pero el chero al que quieres acceder debería estar en la
carpeta assets del proyecto.

Un saludo.

https://cursokotlin.com/capitulo-13-desarrollando-nuestra-primera-app-kotlin-segunda-parte/ 20/23
07-11-2018 Capítulo 13 - Desarrollando nuestra primera app en Kotlin [Segunda parte] - Curso Kotlin Para android

DEJA UN COMENTARIO

COMENTARIO

NOMBRE *

CORREO ELECTRÓNICO *

WEB

No soy un robot
reCAPTCHA
Privacidad - Condiciones

PUBLICAR COMENTARIO

https://cursokotlin.com/capitulo-13-desarrollando-nuestra-primera-app-kotlin-segunda-parte/ 21/23
07-11-2018 Capítulo 13 - Desarrollando nuestra primera app en Kotlin [Segunda parte] - Curso Kotlin Para android

Buscar …

BUSCAR

C O M PA R T I R

E T I Q U E TA S

android android studio kotlin aprender kotlin capitulo 2 capitulo 3 capítulo 6 capítulo 7

concatenación kotlin condiciones en kotlin curso android en kotlin curso android kotlin

curso de programacion android en kotlin curso de programación


kotlin curso de programación kotlin en español
curso kotlin curso kotlin en español curso
programacion android en kotlin curso programacion kotlin en español
curso programación kotlin de nir variables kotlin ejecutar .kt expresión when
funciones en kotlin hello world en kotlin if else en kotlin if en kotlin Instalar IntelliJ IDEA para Kotlin

instalar kotlin introducción a kotlin intrucciones condicionales en kotlin kotlin kotlin en español kotlin
lenguaje funcional kotlin switch operaciones aritmeticas kotlin parametros de entrada en kotlin parametros

de salida kotlin que es kotlin switch en kotlin tutorial kotlin usar variables kotlin var variables variables en
kotlin when en kotlin
https://cursokotlin.com/capitulo-13-desarrollando-nuestra-primera-app-kotlin-segunda-parte/ 22/23
07-11-2018 Capítulo 13 - Desarrollando nuestra primera app en Kotlin [Segunda parte] - Curso Kotlin Para android

Copyright © 2018 Curso Kotlin Para android – Tema OnePress hecho por
FameThemes

https://cursokotlin.com/capitulo-13-desarrollando-nuestra-primera-app-kotlin-segunda-parte/ 23/23
07-11-2018 Capítulo 14 - Data Classes en Kotlin - Curso Kotlin Para android

CURSO KOTLIN PARA ANDROID


Aprende a programar en el lenguaje del futuro

QUIEN SOY CURSO PROGRAMACIÓN ANDROID EN KOTLIN

CONTACTO

Capítulo 14 – Data Classes en Kotlin


PÚBLICADO EN 26 JULIO, 2017 POR ARIS

Data Classes

https://cursokotlin.com/capitulo-14-data-classes-en-kotlin/ 1/8
07-11-2018 Capítulo 14 - Data Classes en Kotlin - Curso Kotlin Para android

Una data class es una clase que contiene solamente atributos que quedemos guardar, por
ejemplo datos de un superhéroe. Con esto conseguimos por ejemplo no tener varias variables
“nombre1”, “nombre2” para almacenar todos los superhéroes con los que vamos a trabajar.

Generando nuestra Data Class


Vamos a crear un proyecto nuevo llamado “SuperHeroList” y dentro crearemos una nueva
clase de kotlin (No una activity) llamada Superhero.

1 data class Superhero(


2         var superhero:String,
3         var publisher:String,
4         var realName:String,
5         var photo:String
6 )

A simple vista podemos ver varias cosas, la primera que a diferencia de una clase normal esta
no lleva llaves y la clase va precedida por “data”. Esto le dice a Kotlin que esta clase va a tener
por defecto una serie de funciones (aunque no vamos a tener que generarlas nosotros, lo hará
el propio lenguaje por detrás) que podremos usar para rellenar dichos campos.  La idea es tener
un objeto Superhero por cada superhéroe que tengamos. Un objeto es simplemente la instancia
de una clase.

Creando objetos Superhero


Aunque la clase parezca muy sencilla, por detrás nos ha generado funciones para poder
recuperar el valor de cada uno de los atributos, sustituirlos, compararlos…

Lo primero que haremos será crear nuestro primer objeto. Para generarlo usaremos el
constructor por defecto que trae la clase. Un constructor es una función que se llama
automáticamente cuando instanciamos el objeto, y su única función es asignar un valor a cada
uno de los parámetros.

1 val batman:Superhero = Superhero("Batman", "DC", "Bruce Wayne", "https://

Hemos creado un objeto de la clase Superhero llamado batman. Para instanciarlo, tenemos que
pasar entre paréntesis cada uno de los valores para cada atributo.

Trabajando con Batman


Ahora que tenemos el objeto batman, podemos acceder a cualquiera de sus atributos para
recuperar el valor o cambiarlo.

https://cursokotlin.com/capitulo-14-data-classes-en-kotlin/ 2/8
07-11-2018 Capítulo 14 - Data Classes en Kotlin - Curso Kotlin Para android

1 val batman:Superhero = Superhero("Batman", "DC", "Bruce Wayne", "https://


2 val batmanRealName = batman.realName //Recuperamos "Bruce Wayne"
3 batman.realName = "Soy Batman" //Cambiamos "Brece Wayne" por "Soy Batman"
4 batman.toString() //Devolverá todos los atributos con su valor

Objetos inmutables
Supongamos que no queremos que esos objetos puedan ser cambiados, es información
verídica que no requiere de cambio alguno. Para ello debemos ir a la data class y cambiar var
por val.

1 data class Superhero(


2         val superhero:String,
3         val publisher:String,
4         val realName:String,
5         var photo:String
6 )

Ahora una vez creemos el objeto solo se podrá cambiar la foto. Si pasáramos todos los campos
a val tendríamos un objeto inmutable por lo que no podríamos usar por ejemplo el
batman.realName = “Nuevo nombre”.

Si quisiéramos modi car a batman podríamos usar la función Copy() para crear un nuevo objeto
con algún atributo distinto.

1 val batman:Superhero = Superhero("Batman", "DC", "Bruce Wayne", "https://


2 val superBatman:Superhero = batman.copy(superhero = "SuperBatman")

Ahora si hacemos un toString() veremos que todos los campos son iguales excepto el atributo
superhero.

Recuperación de parámetros
Por defecto, en cada data class, kotlin nos genera un componentN() para cada uno de los
parámetros.

1         batman.component1() //Batman
2         batman.component2() //DC
3         batman.component3() //Bruce Wayne
4         batman.component4() //https://cursokotlin.com/wp-content/uploads/

También podemos almacenar todos los parámetros de un objeto de golpe.

https://cursokotlin.com/capitulo-14-data-classes-en-kotlin/ 3/8
07-11-2018 Capítulo 14 - Data Classes en Kotlin - Curso Kotlin Para android

1 val (superheroFav, publisherFav, realNameFav, photoFav) = batman


2         superheroFav //Batman
3         publisherFav //DC
4         realNameFav //Bruce Wayne
5         photoFav //https://cursokotlin.com/wp-content/uploads/2017/07/bat

Lista de superhéroes
Para acabar vamos a generar una lista de superheroes, que la usaremos en el siguiente capítulo
para nuestra primera lista.

1 var superheros:MutableList<Superhero> = mutableListOf()


2         superheros.add(Superhero("Spiderman", "Marvel", "Peter Parker", "
3         superheros.add(Superhero("Daredevil", "Marvel", "Matthew Michael
4         superheros.add(Superhero("Wolverine", "Marvel", "James Howlett",
5         superheros.add(Superhero("Batman", "DC", "Bruce Wayne", "https://
6         superheros.add(Superhero("Thor", "Marvel", "Thor Odinson", "https
7         superheros.add(Superhero("Flash", "DC", "Jay Garrick", "https://c
8         superheros.add(Superhero("Green Lantern", "DC", "Alan Scott", "ht
9         superheros.add(Superhero("Wonder Woman", "DC", "Princess Diana",

Con esto tenemos una lista de superhéroes, en la que podríamos ltrar por ejemplo por
compañía o ir añadiendo más en el futuro.

Comparte
0 Like 4 Share Tweet

PUBLICADO EL CURSO DE ANDROID EN KOTLIN

ETIQUETADO CON CURSO PROGRAMACION ANDROID EN KOTLIN, DATA CLASS,


DATA CLASS EN KOTLIN, DATA CLASSES, KOTLIN DATA CLASS, MODELOS EN
KOTLIN, OBJETOS EN KOTLIN

3 COMENTARIOS SOBRE “CAPÍTULO 14 – DATA CLASSES


EN KOTLIN”

https://cursokotlin.com/capitulo-14-data-classes-en-kotlin/ 4/8
07-11-2018 Capítulo 14 - Data Classes en Kotlin - Curso Kotlin Para android

Pingback: Capítulo 15 - Recyclerview en Kotlin - Curso Kotlin Para android

VALERIA 4 MAYO, 2018 / CONTESTAR

Hola, buenas noches. Mi duda es sobre la creación de la data class. Se


crea como Kotlin Class desde app?
Estoy haciendo el ejercicio de recycleView, pero de esta forma desde
el main no reconoce esta clase Superhero creada.

ARIS Autor del artículo 4 MAYO, 2018 / CONTESTAR

Buenas, simplemente crea una clase y añade la palabra


reservada data.

¿Cómo que no la reconoce? ¿La haz importado?

Un saludo

DEJA UN COMENTARIO

COMENTARIO

https://cursokotlin.com/capitulo-14-data-classes-en-kotlin/ 5/8
07-11-2018 Capítulo 14 - Data Classes en Kotlin - Curso Kotlin Para android

NOMBRE *

CORREO ELECTRÓNICO *

WEB

No soy un robot
reCAPTCHA
Privacidad - Condiciones

PUBLICAR COMENTARIO

https://cursokotlin.com/capitulo-14-data-classes-en-kotlin/ 6/8
07-11-2018 Capítulo 14 - Data Classes en Kotlin - Curso Kotlin Para android

Buscar …

BUSCAR

C O M PA R T I R

E T I Q U E TA S

android android studio kotlin aprender kotlin capitulo 2 capitulo 3 capítulo 6 capítulo 7

concatenación kotlin condiciones en kotlin curso android en kotlin curso android kotlin

curso de programacion android en kotlin curso de programación


kotlin curso de programación kotlin en español
curso kotlin curso kotlin en español curso
programacion android en kotlin curso programacion kotlin en español
curso programación kotlin de nir variables kotlin ejecutar .kt expresión when
funciones en kotlin hello world en kotlin if else en kotlin if en kotlin Instalar IntelliJ IDEA para Kotlin

instalar kotlin introducción a kotlin intrucciones condicionales en kotlin kotlin kotlin en español kotlin
lenguaje funcional kotlin switch operaciones aritmeticas kotlin parametros de entrada en kotlin parametros

de salida kotlin que es kotlin switch en kotlin tutorial kotlin usar variables kotlin var variables variables en
kotlin when en kotlin

https://cursokotlin.com/capitulo-14-data-classes-en-kotlin/ 7/8
07-11-2018 Capítulo 14 - Data Classes en Kotlin - Curso Kotlin Para android

Copyright © 2018 Curso Kotlin Para android – Tema OnePress hecho por
FameThemes

https://cursokotlin.com/capitulo-14-data-classes-en-kotlin/ 8/8
07-11-2018 Capítulo 15 - Recyclerview en Kotlin - Curso Kotlin Para android

CURSO KOTLIN PARA ANDROID


Aprende a programar en el lenguaje del futuro

QUIEN SOY CURSO PROGRAMACIÓN ANDROID EN KOTLIN

CONTACTO

Capítulo 15 – Recyclerview en Kotlin


PÚBLICADO EN 30 JULIO, 2017 POR ARIS

Llegamos a algo imprescindible en el desarrollo de aplicaciones móviles, las listas. Antaño se


usaban ListView en android, pero con el tiempo Google sacó las RecyclerView, listas más
customizables, potentes y e cientes.

https://cursokotlin.com/capitulo-15-recyclerview-kotlin/ 1/19
07-11-2018 Capítulo 15 - Recyclerview en Kotlin - Curso Kotlin Para android

Con gurando nuestro proyecto


Lo primero que haremos será crear un nuevo proyecto o podemos usar el del capítulo anterior,
pues reutilizaremos código de ahí.

https://cursokotlin.com/capitulo-15-recyclerview-kotlin/ 2/19
07-11-2018 Capítulo 15 - Recyclerview en Kotlin - Curso Kotlin Para android

Una vez creado iremos al build.gradle del módulo app e implementaremos una dependencia.
Una dependencia es básicamente código externo del proyecto el cual podemos implementar
para aprovecharlo, en este caso implementaremos el Recyclerview que por defecto no lo trae.

Así que vamos a la parte de las dependencies{}  y añadimos

1     implementation 'com.android.support:recyclerview-v7:25.0.0'

Y también añadiremos una librería llamada Picasso que la usaremos para la gestión de
imágenes.

1     implementation 'com.squareup.picasso:picasso:2.5.2'

Nos aparecerá en la parte superior una barra que nos dirá que es necesario sincronizar el
gradle, así que le damos. Si todo sale bien ya tendremos esta parte con gurada, si te da error de
sdk posiblemente es que tengas varias versiones diferentes (CompileSDKVersion,
buildToolsVersion…) todas a 25. Debería quedar así.

https://cursokotlin.com/capitulo-15-recyclerview-kotlin/ 3/19
07-11-2018 Capítulo 15 - Recyclerview en Kotlin - Curso Kotlin Para android

1 apply plugin: 'com.android.application'


2  
3 apply plugin: 'kotlin-android'
4  
5 apply plugin: 'kotlin-android-extensions'
6  
7 android {
8     compileSdkVersion 25
9     buildToolsVersion "25.0.0"
10     defaultConfig {
11         applicationId "com.cursokotlin.dataclasskotlin" //Nombre de nues
12         minSdkVersion 15
13         targetSdkVersion 25
14         versionCode 1
15         versionName "1.0"
16         testInstrumentationRunner "android.support.test.runner.AndroidJU
17     }
18     buildTypes {
19         release {
20             minifyEnabled false
21             proguardFiles getDefaultProguardFile('proguard-android.txt')
22         }
23     }
24 }
25  
26 dependencies {
27     implementation fileTree(dir: 'libs', include: ['*.jar'])
28     androidTestImplementation ('com.android.support.test.espresso:espres
29         exclude group: 'com.android.support', module: 'support-annotatio
30     })
31     implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_vers
32     implementation 'com.android.support:appcompat-v7:25.4.0'
33     testImplementation 'junit:junit:4.12'
34     implementation 'com.android.support.constraint:constraint-layout:1.0
35     implementation 'com.android.support:recyclerview-v7:25.0.0'
36     implementation 'com.squareup.picasso:picasso:2.5.2'
37 }

Editando nuestra layout y creando una celda


El layout principal será el contenedor del RecyclerView, pero luego para in arlo tendremos que
crear un adapter (hablaremos de él un poco más abajo) y una celda que será la que muestre
cada una de las las de la lista.

activity_main.xml

https://cursokotlin.com/capitulo-15-recyclerview-kotlin/ 4/19
07-11-2018 Capítulo 15 - Recyclerview en Kotlin - Curso Kotlin Para android
1 <?xml version="1.0" encoding="utf-8"?>
2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/androi
3     xmlns:tools="http://schemas.android.com/tools"
4     android:layout_width="match_parent"
5     android:layout_height="match_parent"
6     tools:context="com.cursokotlin.dataclasskotlin.MainActivity">
7  
8     <android.support.v7.widget.RecyclerView
9         android:id="@+id/rvSuperheroList"
10         android:layout_width="match_parent"
11         android:layout_height="wrap_content" />
12  
13 </RelativeLayout>

En este ejemplo seguiremos con los objetos superhéroe del capítulo anterior así que la celda
que hagamos llevará un ImageView para el logo del superhéroe y tres textos, uno para el
nombre real, el nombre de superhéroe y el de la compañía (DC o Marvel). Vamos a res/layout y
creamos un archivo llamado item_superhero_list.xml

https://cursokotlin.com/capitulo-15-recyclerview-kotlin/ 5/19
07-11-2018 Capítulo 15 - Recyclerview en Kotlin - Curso Kotlin Para android
1 <?xml version="1.0" encoding="utf-8"?>
2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/androi
3     xmlns:tools="http://schemas.android.com/tools"
4     android:orientation="vertical"
5     android:layout_width="match_parent"
6     android:layout_height="wrap_content"
7     android:layout_margin="10dp">
8  
9     <ImageView
10         android:id="@+id/ivAvatar"
11         android:layout_width="100dp"
12         android:layout_height="100dp"
13         android:layout_marginEnd="10dp"
14         android:layout_marginRight="10dp"
15         android:scaleType="centerCrop" />
16  
17     <TextView
18         android:id="@+id/tvSuperhero"
19         android:layout_width="wrap_content"
20         android:layout_height="wrap_content"
21         android:textStyle="bold"
22         android:textSize="20sp"
23         android:layout_alignParentTop="true"
24         android:layout_toRightOf="@+id/ivAvatar"
25         android:layout_toEndOf="@+id/ivAvatar"
26         tools:text= "dadawdawdwd" />
27  
28     <TextView
29         android:id="@+id/tvRealName"
30         android:layout_width="wrap_content"
31         android:layout_height="wrap_content"
32         android:textSize="15sp"
33         android:layout_below="@+id/tvSuperhero"
34         android:layout_toRightOf="@+id/ivAvatar"
35         android:layout_toEndOf="@+id/ivAvatar"
36         tools:text = "wdawd"/>
37  
38     <TextView
39         android:id="@+id/tvPublisher"
40         android:layout_width="wrap_content"
41         android:layout_height="wrap_content"
42         android:textStyle="italic"
43         android:layout_alignParentBottom="true"
44         android:layout_alignParentRight="true"
45         android:layout_alignParentEnd="true"
46         tools:text = "DC"/>
47 </RelativeLayout>

https://cursokotlin.com/capitulo-15-recyclerview-kotlin/ 6/19
07-11-2018 Capítulo 15 - Recyclerview en Kotlin - Curso Kotlin Para android

Si no me equivoco todos los atributos de arriba ya los hemos visto excepto los “tools:text” la
función tools lo que hace es ayudarnos a ver algo de un modo más sencillo. Aquí por ejemplo
está poniendo un texto para poder ir maquetando mejor la vista, pero cuando compile la
aplicación, ese texto no estará, así que podríamos decir que es un molde. Si tenéis alguna otra
duda podéis dejar un comentario.

Ahora vamos a crear un modelo superhéroe del cual haremos varias listas para cargar en el
recyclerview, como esto ya está hecho en el capítulo anterior solo os voy a dejar la clase aquí
para que la copien.

1 data class Superhero(


2         var superhero:String,
3         var publisher:String,
4         var realName:String,
5         var photo:String
6 )

Creando nuestros objetos superhéroes


Volvemos a MainActivity.kt  y vamos a crear dos funciones, una que con gurará nuestro
recyclerview con el adapter y otra que generará la lista de objetos superhéroes.

https://cursokotlin.com/capitulo-15-recyclerview-kotlin/ 7/19
07-11-2018 Capítulo 15 - Recyclerview en Kotlin - Curso Kotlin Para android

1 class MainActivity : AppCompatActivity() {


2  
3     override fun onCreate(savedInstanceState: Bundle?) {
4         super.onCreate(savedInstanceState)
5         setContentView(R.layout.activity_main)
6         setUpRecyclerView()
7     }
8  
9     fun setUpRecyclerView(){
10         ...
11     }
12  
13     fun getSuperheros(): MutableList<Superhero>{
14         var superheros:MutableList<Superhero> = ArrayList()
15         superheros.add(Superhero("Spiderman", "Marvel", "Peter Parker",
16         superheros.add(Superhero("Daredevil", "Marvel", "Matthew Michael
17         superheros.add(Superhero("Wolverine", "Marvel", "James Howlett",
18         superheros.add(Superhero("Batman", "DC", "Bruce Wayne", "https:/
19         superheros.add(Superhero("Thor", "Marvel", "Thor Odinson", "http
20         superheros.add(Superhero("Flash", "DC", "Jay Garrick", "https://
21         superheros.add(Superhero("Green Lantern", "DC", "Alan Scott", "h
22         superheros.add(Superhero("Wonder Woman", "DC", "Princess Diana",
23         return superheros
24     }
25 }

Aunque la clase no está terminada, quería que vieran el modelo de superhéroe creado, para
que ahora entiendan mejor que vamos a hacer en el adapter.

Creando el adapter
Ahora vamos a crear el adapter del Recyclerview. Un adapter es la clase que hace de puente
entre la vista (el recyclerview) y los datos. Así que creamos una nueva clase llamada
RecyclerAdapter.kt

La clase RecyclerAdapter se encargará de recorrer la lista de superhéroes que le pasaremos


más tarde, y llamando a otra clase interna que tendrá, este rellenará los campos.

Vamos a ir viendo método por método, así que hasta el nal de la explicación la clase tendrá
fallos.

https://cursokotlin.com/capitulo-15-recyclerview-kotlin/ 8/19
07-11-2018 Capítulo 15 - Recyclerview en Kotlin - Curso Kotlin Para android

1 class RecyclerAdapter : RecyclerView.Adapter<RecyclerAdapter.ViewHolder>(


2  
3     var superheros: MutableList<Superhero>  = ArrayList()
4     lateinit var context:Context
5     
6     ...
7 }

Lo primero que hacemos es decirle a la clase que tendrá un RecyclerAdapter y un ViewHolder.


Después creamos las dos variables que necesitamos para el adapter, una lista de superhéroes
(que rellenaremos en la clase principal y se la mandaremos aquí y el contexto de la mainAcitivity
para poder trabajar con la librería Picasso.

1 fun RecyclerAdapter(superheros : MutableList<Superhero>, context: Conte


2         this.superheros = superheros
3         this.context = context
4     }
5  
6     override fun onBindViewHolder(holder: ViewHolder, position: Int) {
7         val item = superheros.get(position)
8         holder.bind(item, context)
9     }
10  
11     override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): V
12         val layoutInflater = LayoutInflater.from(parent.context)
13         return ViewHolder(layoutInflater.inflate(R.layout.item_superhero
14     }
15  
16     override fun getItemCount(): Int {
17         return superheros.size
18     }

Lo primero es un simple constructor (tiene el mismo nombre que la clase y lo único que hará
será recibir la lista y el contexto que le pasamos desde la clase principal).

Los siguientes tres métodos tienen delante la palabra reservada override, esto es porque son
métodos obligatorios que se implementan de la clase RecyclerView. onBindViewHolder() se
encarga de coger cada una de las posiciones de la lista de superhéroes y pasarlas a la clase
ViewHolder(todavía no está hecha) para que esta pinte todos los valores.

Después tenemos onCreateViewHolder() que como su nombre indica lo que hará será


devolvernos un objeto ViewHolder al cual le pasamos la celda que hemos creado.

Y para nalizar el método getItemCount() nos devuelve el tamaño de la lista, que lo necesita el
RecyclerView.

https://cursokotlin.com/capitulo-15-recyclerview-kotlin/ 9/19
07-11-2018 Capítulo 15 - Recyclerview en Kotlin - Curso Kotlin Para android

Para nalizar el adapter queda hacer la clase ViewHolder de la que tanto hemos hablado. No es
necesaria hacerla dentro del adapter, pero como van tan ligadas la una a la otra creo que es lo
mejor.

1 class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {


2         val superheroName = view.findViewById(R.id.tvSuperhero) as TextV
3         val realName = view.findViewById(R.id.tvRealName) as TextView
4         val publisher = view.findViewById(R.id.tvPublisher) as TextView
5         val avatar = view.findViewById(R.id.ivAvatar) as ImageView
6  
7         fun bind(superhero:Superhero, context: Context){
8             superheroName.text = superhero.superhero
9             realName.text = superhero.realName
10             publisher.text = superhero.publisher
11             itemView.setOnClickListener(View.OnClickListener { Toast.mak
12             avatar.loadUrl(superhero.photo)
13         }
14         fun ImageView.loadUrl(url: String) {
15             Picasso.with(context).load(url).into(this)
16         }
17     }

Lo primero que hace esta clase es hacer referencia a los items de la celda, el
view. ndViewByID() busca los items a través de la id que le ponemos, y luego añadimos el as
X donde X es el tipo del componente (ImageView, TextView…).

Dentro tiene el método bind(superhero:Superhero, context: Context) que dicho método lo


llamamos desde el onBindViewHolder() para que rellene los datos. Después de añadir todos los
textos que queremos, hacemos 2 cositas más. La primera es que llamamos a itemView que es
la vista (celda) que estamos rellenando y le ponemos un setOnClickListener que pintará en
pantalla el nombre del superhéroe en el que hemos hecho click. Y para nalizar seleccionamos
el ImageView y con el método que hemos creado le pasamos la URL de la imagen. Esta url la
usará Picasso para descargarla de internet y pintarla en nuestra lista. Pero para que Picasso
pueda hacer eso, debemos ponerle permiso de internet a nuestra app.

Vamos a AndroidManifest.xml y añadimos el permiso después de abrir la etiqueta manifest.

https://cursokotlin.com/capitulo-15-recyclerview-kotlin/ 10/19
07-11-2018 Capítulo 15 - Recyclerview en Kotlin - Curso Kotlin Para android

1 <?xml version="1.0" encoding="utf-8"?>


2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3     package="com.cursokotlin.dataclasskotlin">
4  
5     <uses-permission android:name="android.permission.INTERNET" /> //Ped
6  
7     <application
8         android:allowBackup="true"
9         android:icon="@mipmap/ic_launcher"
10         android:label="@string/app_name"
11         android:roundIcon="@mipmap/ic_launcher_round"
12         android:supportsRtl="true"
13         android:theme="@style/AppTheme">
14         <activity android:name=".MainActivity">
15             <intent-filter>
16                 <action android:name="android.intent.action.MAIN" />
17  
18                 <category android:name="android.intent.category.LAUNCHER
19             </intent-filter>
20         </activity>
21     </application>
22  
23 </manifest>

Y nuestro adapter completo sería así.

https://cursokotlin.com/capitulo-15-recyclerview-kotlin/ 11/19
07-11-2018 Capítulo 15 - Recyclerview en Kotlin - Curso Kotlin Para android

1 class RecyclerAdapter : RecyclerView.Adapter<RecyclerAdapter.ViewHolder>


2  
3     var superheros: MutableList<Superhero>  = ArrayList()
4     lateinit var context:Context
5  
6     fun RecyclerAdapter(superheros : MutableList<Superhero>, context: Co
7         this.superheros = superheros
8         this.context = context
9     }
10  
11     override fun onBindViewHolder(holder: ViewHolder, position: Int) {
12         val item = superheros.get(position)
13         holder.bind(item, context)
14     }
15  
16     override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): V
17         val layoutInflater = LayoutInflater.from(parent.context)
18         return ViewHolder(layoutInflater.inflate(R.layout.item_superhero
19     }
20  
21     override fun getItemCount(): Int {
22         return superheros.size
23     }
24  
25     class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
26         val superheroName = view.findViewById(R.id.tvSuperhero) as TextV
27         val realName = view.findViewById(R.id.tvRealName) as TextView
28         val publisher = view.findViewById(R.id.tvPublisher) as TextView
29         val avatar = view.findViewById(R.id.ivAvatar) as ImageView
30  
31         fun bind(superhero:Superhero, context: Context){
32             superheroName.text = superhero.superhero
33             realName.text = superhero.realName
34             publisher.text = superhero.publisher
35             avatar.loadUrl(superhero.photo)
36             itemView.setOnClickListener(View.OnClickListener { Toast.mak
37         }
38         fun ImageView.loadUrl(url: String) {
39             Picasso.with(context).load(url).into(this)
40         }
41     }
42 }

Ahora volvemos al MainActivity.kt para nalizar el método que nos queda. Primero crearemos
dos variables, la del RecyclerView y la del adapter que acabamos de terminar.

1     lateinit var mRecyclerView : RecyclerView


2     val mAdapter : RecyclerAdapter = RecyclerAdapter()

https://cursokotlin.com/capitulo-15-recyclerview-kotlin/ 12/19
07-11-2018 Capítulo 15 - Recyclerview en Kotlin - Curso Kotlin Para android

El recyclerview lo tenemos que instanciar en el método setUpRecyclerView() por lo que tenemos


que ponerle la propiedad lateinit a la variable, indicándole a Kotlin que la instanciaremos más
tarde.

1     fun setUpRecyclerView(){
2         mRecyclerView = findViewById(R.id.rvSuperheroList) as RecyclerVie
3         mRecyclerView.setHasFixedSize(true)
4         mRecyclerView.layoutManager = LinearLayoutManager(this)
5         mAdapter.RecyclerAdapter(getSuperheros(), this)
6         mRecyclerView.adapter = mAdapter
7     }

Para nalizar creamos el método, lo primero que hará será buscar en el layout el Recycler y
asignarselo a la variable que creamos. El siguiente método se usa para evitar problemas cuando
el padre que contiene la lista cambia y puede estropear el recycler.

Luego llamamos a nuestro adapter y le pasamos los campos que necesite, en este caso
getSuperheros (que devuelve una lista de superhéroes) y this (el contexto). Y para nalizar se lo
asignamos a el recyclerview.

Ahora solo necesitamos compilar para ver el resultado de nuestra aplicación.

https://cursokotlin.com/capitulo-15-recyclerview-kotlin/ 13/19
07-11-2018 Capítulo 15 - Recyclerview en Kotlin - Curso Kotlin Para android

Comparte
0 Like 2 Share Tweet

https://cursokotlin.com/capitulo-15-recyclerview-kotlin/ 14/19
07-11-2018 Capítulo 15 - Recyclerview en Kotlin - Curso Kotlin Para android

PUBLICADO EL CURSO DE ANDROID EN KOTLIN

ETIQUETADO CON COMO HACER UNA LISTA EN KOTLIN, CURSO ANDROID


KOTLIN, CURSO PROGRAMACIÓN KOTLIN, RECYCLERVIEW, RECYCLERVIEW EN
KOTLIN, TUTORIAL RECYCLERVIEW KOTLIN

6 COMENTARIOS SOBRE “CAPÍTULO 15 –


RECYCLERVIEW EN KOTLIN”

ROBERTO 11 SEPTIEMBRE, 2017 / CONTESTAR

Me ha gustado este artículo, muchas gracias por compartirlo y sigue


así.

PABLO SUÁREZ 19 OCTUBRE, 2017 / CONTESTAR

Genial, muchas gracias!


Espero por más…

JOHN 20 NOVIEMBRE, 2017 / CONTESTAR

Thank you. I enjoy it

https://cursokotlin.com/capitulo-15-recyclerview-kotlin/ 15/19
07-11-2018 Capítulo 15 - Recyclerview en Kotlin - Curso Kotlin Para android

IVAN RODRIGUEZ 15 DICIEMBRE, 2017 / CONTESTAR

Muyyyyy Buenoo, a estudiar se dijo jajaja esto es una clase larguita,


en mi caso hubo mas copy/paste que logic paste (hablo de mi) jajaja
muy buena MAKIA.

JOSUE GONZALEZ 1 JUNIO, 2018 / CONTESTAR

Amigo, gracias por todo.


Pero a patir del capitulo anterior y mas aun en este ya tu explicación
no era tan precisa como al inicio, supongo que puedes estar agotado
se que no es fácil, pero hay muchos datos que no explicas como
instanciar, viewHolder entre otras, tranqui, traqnui no te estoy
pidiendo que lo expliques en una respuesta si bien es cierto podemos
googlear pero creo que la nalidad del curso se perdió aquí, aprendí
todo hasta el capitulo 13 pero aquí ya no hay explicación sino trabajo
hecho, no se si tenias prisa por sacar un producto pero en mi
perspectiva personal creo que se te paso una explicación mas
detallada.

Igual no dejo de agradecerte, pero para futuro espero tomes en


cuenta mi comentario.

ARIS Autor del artículo 7 JUNIO, 2018 / CONTESTAR

Buenas, agradezco todo tipo de críticas constructivas. Creo que


el curso sigue el mismo plano, pero que la carga de trabajo
aumenta. Si es posible que deje cosas sin explicar, más por
despistes míos que otra cosa, es por ello que siempre digo que

https://cursokotlin.com/capitulo-15-recyclerview-kotlin/ 16/19
07-11-2018 Capítulo 15 - Recyclerview en Kotlin - Curso Kotlin Para android

pregunten en los comentarios porque cada vez tengo menos


tiempo para escribir, además que yo también estoy
aprendiendo.

Un saludo y espero que el próximo capítulo te guste más.

DEJA UN COMENTARIO

COMENTARIO

NOMBRE *

CORREO ELECTRÓNICO *

WEB

https://cursokotlin.com/capitulo-15-recyclerview-kotlin/ 17/19
07-11-2018 Capítulo 15 - Recyclerview en Kotlin - Curso Kotlin Para android

No soy un robot
reCAPTCHA
Privacidad - Condiciones

PUBLICAR COMENTARIO

Buscar …

BUSCAR

C O M PA R T I R

E T I Q U E TA S

android android studio kotlin aprender kotlin capitulo 2 capitulo 3 capítulo 6 capítulo 7

concatenación kotlin condiciones en kotlin curso android en kotlin curso android kotlin

curso de programacion android en kotlin curso de programación


kotlin curso de programación kotlin en español
curso kotlin curso kotlin en español curso
https://cursokotlin.com/capitulo-15-recyclerview-kotlin/ 18/19
07-11-2018 Capítulo 15 - Recyclerview en Kotlin - Curso Kotlin Para android

programacion android en kotlin curso programacion kotlin en español


curso programación kotlin de nir variables kotlin ejecutar .kt expresión when
funciones en kotlin hello world en kotlin if else en kotlin if en kotlin Instalar IntelliJ IDEA para Kotlin

instalar kotlin introducción a kotlin intrucciones condicionales en kotlin kotlin kotlin en español kotlin
lenguaje funcional kotlin switch operaciones aritmeticas kotlin parametros de entrada en kotlin parametros

de salida kotlin que es kotlin switch en kotlin tutorial kotlin usar variables kotlin var variables variables en
kotlin when en kotlin

Copyright © 2018 Curso Kotlin Para android – Tema OnePress hecho por
FameThemes

https://cursokotlin.com/capitulo-15-recyclerview-kotlin/ 19/19
07-11-2018 Capítulo 16 - Persistencia de datos con Shared Preferences - Curso Kotlin Para android

CURSO KOTLIN PARA ANDROID


Aprende a programar en el lenguaje del futuro

QUIEN SOY CURSO PROGRAMACIÓN ANDROID EN KOTLIN

CONTACTO

Capítulo 16 – Persistencia de datos con Shared


Preferences
PÚBLICADO EN 1 OCTUBRE, 2017 POR ARIS

https://cursokotlin.com/capitulo-16-persistencia-datos-shared-preferences/ 1/15
07-11-2018 Capítulo 16 - Persistencia de datos con Shared Preferences - Curso Kotlin Para android

Un requisito básico para la mayoría de aplicaciones móviles a nivel profesional suele ser la
persistencia de datos, con ella conseguimos no solo persistir información del usuario, sino que
podemos almacenar contenido que ayuden a un funcionamiento mas óptimo, por ejemplo
cacheando contenido que recuperamos de internet para no repetir las consultas cada vez que
pasamos por dicha activity.

Las tres formas de almacenar información son a través de las Shared Preferences, cheros o
bases de datos. Como norma general no se suelen usar cheros así que los descartaremos por
ahora y en este capítulo veremos las Shared Preferences.

¿Que son las Shared Preferences?


Las Shared están destinadas a almacenar pequeñas cantidades de información a través de
clave-valor. Debe ser información no comprometida puesto que Android generará un chero
XML donde almacenará toda esta información sin cifrar. Estos cheros pueden ser compartidos
o privados.

En este proyecto vamos a crear una aplicación muy sencilla en la cual si no hay ningún nombre
guardado nos pedirá que lo pongamos, si por el contrario ya disponemos de uno nos saldrá en
pantalla junto a un botón de borrar. Otra parte importante es que haremos nuestro primer
patrón de diseño, el Singleton.

Lo primero que haremos será crear un nuevo proyecto y haremos una maquetación muy simple
del layout.

https://cursokotlin.com/capitulo-16-persistencia-datos-shared-preferences/ 2/15
07-11-2018 Capítulo 16 - Persistencia de datos con Shared Preferences - Curso Kotlin Para android

1 <?xml version="1.0" encoding="utf-8"?>


2 <android.support.constraint.ConstraintLayout xmlns:android="http://schem
3     xmlns:app="http://schemas.android.com/apk/res-auto"
4     xmlns:tools="http://schemas.android.com/tools"
5     android:layout_width="match_parent"
6     android:layout_height="match_parent"
7     tools:context="com.cursokotlin.sharedpreferences.MainActivity">
8  
9     <TextView
10         android:id="@+id/tvName"
11         android:layout_width="wrap_content"
12         android:layout_height="wrap_content"
13         app:layout_constraintBottom_toBottomOf="parent"
14         app:layout_constraintLeft_toLeftOf="parent"
15         app:layout_constraintRight_toRightOf="parent"
16         app:layout_constraintTop_toTopOf="parent" />
17  
18     <EditText
19         android:id="@+id/etName"
20         android:layout_width="wrap_content"
21         android:layout_height="wrap_content"
22         android:hint="Escribe tu nombre"
23         app:layout_constraintBottom_toBottomOf="parent"
24         app:layout_constraintLeft_toLeftOf="parent"
25         app:layout_constraintRight_toRightOf="parent"
26         app:layout_constraintTop_toTopOf="parent" />
27  
28     <Button
29         android:id="@+id/btnDeleteValue"
30         android:layout_width="wrap_content"
31         android:layout_height="wrap_content"
32         android:text="Borrar"
33         app:layout_constraintBottom_toBottomOf="parent"
34         app:layout_constraintLeft_toLeftOf="parent"
35         app:layout_constraintRight_toRightOf="parent"/>
36  
37     <Button
38         android:id="@+id/btnSaveValue"
39         android:layout_width="wrap_content"
40         android:layout_height="wrap_content"
41         android:text="Guardar"
42         app:layout_constraintBottom_toBottomOf="parent"
43         app:layout_constraintLeft_toLeftOf="parent"
44         app:layout_constraintRight_toRightOf="parent"/>
45  
46 </android.support.constraint.ConstraintLayout>

https://cursokotlin.com/capitulo-16-persistencia-datos-shared-preferences/ 3/15
07-11-2018 Capítulo 16 - Persistencia de datos con Shared Preferences - Curso Kotlin Para android

Veréis que hay componentes que se sobreponen unos sobre otros, esto es porque así de paso
os voy a enseñar los posibles casos que puede tener una vista.

Lo siguiente que haremos será crear una clase donde de niremos todo lo necesario para
trabajar con shared, la llamaremos Prefs. Esta clase recibirá un contexto, en este caso el de la
aplicación, para poder instanciarlo una sola vez al iniciar la aplicación y tener un objeto pref.

1 class Prefs (context: Context) {


2     val PREFS_NAME = "com.cursokotlin.sharedpreferences"
3     val SHARED_NAME = "shared_name"
4     val prefs: SharedPreferences = context.getSharedPreferences(PREFS_NAM
5  
6     var name: String
7         get() = prefs.getString(SHARED_NAME, "")
8         set(value) = prefs.edit().putString(SHARED_NAME, value).apply()
9 }

Lo primero que hemos hecho ha sido de nir dos constantes, PREFS_NAME y SHARED_NAME la
primera será la clave del objeto pref que crearemos más adelante y la segunda la clave del
nombre que almacenaremos. Recordad que las shared preferences se almacenan con clave-
valor, lo que signi ca que para pedir el valor de “name” necesitamos pedirlo a través de la clave
SHARED_NAME.

Observad también que hemos de nido una variable name que será donde almacenemos el
nombre como dije antes, pero que hemos sobreescrito el método get y set, así que cuando
pidamos el valor de name, este accederá a el objeto prefs y pedirá dicho valor que corresponde
la clave SHARED_NAME. Lo mismo con el set, que a través de prefs.edit().putString(SHARED_NAME,
value).apply() almacenará el valor que le digamos. Obviamente si fuera otro tipo de variable, por
ejemplo un Int, cambiaríamos el putString() por un putInt() y así con cada tipo de variable.

Ahora vamos a crear una clase algo diferente. Esta clase va a extender de Application() y eso
signi ca que será lo primero en ejecutarse al abrirse la aplicación.

Para extender de dicha clase en Kotlin es muy sencillo, simplemente debemos crear una clase
como siempre y a continuación del nombre después de dos puntos, pondremos la clase en
cuestión.

https://cursokotlin.com/capitulo-16-persistencia-datos-shared-preferences/ 4/15
07-11-2018 Capítulo 16 - Persistencia de datos con Shared Preferences - Curso Kotlin Para android

1 class SharedApp : Application() {


2     companion object {
3         lateinit var prefs: Prefs
4     }
5  
6     override fun onCreate() {
7         super.onCreate()
8         prefs = Prefs(applicationContext)
9     }
10 }

Aunque la clase sea bastante pequeña vamos a comentar unas cosas. Para empezar hemos
declarado un companion object que será el objeto de nuestra clase Prefs que usaremos en todo
el proyecto, así que para que lo entendáis el companion object es una forma de tener un objeto
disponible en todo el proyecto (un objeto estático para los que conozcan java). Y delante lleva
un lateinit  que quiere decir que será instanciado más tarde, en este ejemplo en el método
onCreate() de esta clase.

Recordad que para que esta clase se lance al abrir la app debemos ir al AndroidManifest.xml y
añadir android:name=”.SharedApp ” dentro de la etiqueta <Application>

Ahora iremos a nuestro MainActivity a desarrollar un poco de lógica que falta.

La idea es crear dos métodos, uno mostrará una vista para invitados y el otro la vista del per l,
la diferencia entre ellos será que si eres invitada te mostrará un EditText y un botón de guardar
y por el contrario si ya hay un nombre guardado en persistencia de datos pues te saludará y
tendrá un botón para borrar dicho campo de memoria.

1   fun showProfile(){
2         tvName.visibility = View.VISIBLE
3         tvName.text = "Hola ${SharedApp.prefs.name}"
4         btnDeleteValue.visibility = View.VISIBLE
5         etName.visibility = View.INVISIBLE
6         btnSaveValue.visibility = View.INVISIBLE
7     }
8  
9     fun showGuest(){
10         tvName.visibility = View.INVISIBLE
11         btnDeleteValue.visibility = View.INVISIBLE
12         etName.visibility = View.VISIBLE
13         btnSaveValue.visibility = View.VISIBLE
14     }

https://cursokotlin.com/capitulo-16-persistencia-datos-shared-preferences/ 5/15
07-11-2018 Capítulo 16 - Persistencia de datos con Shared Preferences - Curso Kotlin Para android

Como ya había dicho al comienzo del post, os quiero hablar sobre la visibilidad. Un componente
puede estar en tres estados visible, invisible y gone.

Visible: El componente se ve en la pantalla, por defecto viene esta opción activada.

Invisible: El componente no se ve pero sigue estando en la pantalla, por lo que se puede


seguir trabajando con él, por ejemplo poner algo a la derecha de un componente invisible.

Gone: El componente NO está en la pantalla por lo que no hay interacción posible.

Fijaros que el método showPro le asigna un valor a tvName, lo que signi ca que está
accediendo a las shared preferences. Para ello simplemente llamamos a la clase SharedApp (la
que contiene el companion object), el objeto del cual estamos hablando y el atributo name que
como vimos al principio hemos modi cado para que cuando hagamos un get (sacar la
información que almacena) le pida nuestras shared preference el valor de SHARED_NAME.

Ahora necesitamos un método que compruebe si hay información en name y así comprobar si
el usuario ha guardado su nombre.

1 fun configView(){
2         if(isSavedName()) showProfile() else showGuest()
3     }
4     
5     fun isSavedName():Boolean{
6         val myName = SharedApp.prefs.name
7         return myName != EMPTY_VALUE
8     }

Para nalizar solo debemos guardar o borrar la información del usuario cada vez que pulsemos
el botón correspondiente y acto seguido volver a llamar a con gView() para que muestre la vista
oportuna.

1         btnSaveValue.setOnClickListener {
2             SharedApp.prefs.name = etName.text.toString()
3             configView() }
4         btnDeleteValue.setOnClickListener {
5             SharedApp.prefs.name = EMPTY_VALUE
6             configView()}

La clase completa quedaría así.

https://cursokotlin.com/capitulo-16-persistencia-datos-shared-preferences/ 6/15
07-11-2018 Capítulo 16 - Persistencia de datos con Shared Preferences - Curso Kotlin Para android

1 class MainActivity : AppCompatActivity() {


2  
3     val EMPTY_VALUE = ""
4  
5     override fun onCreate(savedInstanceState: Bundle?) {
6         super.onCreate(savedInstanceState)
7         setContentView(R.layout.activity_main)
8         configView()
9  
10         btnSaveValue.setOnClickListener {
11             SharedApp.prefs.name = etName.text.toString()
12             configView() }
13         btnDeleteValue.setOnClickListener {
14             SharedApp.prefs.name = EMPTY_VALUE
15             configView()}
16     }
17  
18  
19     fun showProfile(){
20         tvName.visibility = View.VISIBLE
21         tvName.text = "Hola ${SharedApp.prefs.name}"
22         btnDeleteValue.visibility = View.VISIBLE
23         etName.visibility = View.INVISIBLE
24         btnSaveValue.visibility = View.INVISIBLE
25     }
26  
27     fun showGuest(){
28         tvName.visibility = View.INVISIBLE
29         btnDeleteValue.visibility = View.INVISIBLE
30         etName.visibility = View.VISIBLE
31         btnSaveValue.visibility = View.VISIBLE
32     }
33  
34     fun configView(){
35         if(isSavedName()) showProfile() else showGuest()
36     }
37  
38     fun isSavedName():Boolean{
39         val myName = SharedApp.prefs.name
40         return myName != EMPTY_VALUE
41     }
42 }

https://cursokotlin.com/capitulo-16-persistencia-datos-shared-preferences/ 7/15
07-11-2018 Capítulo 16 - Persistencia de datos con Shared Preferences - Curso Kotlin Para android

Con esto ya tendríamos lista nuestra primera app con persistencia de datos. Este ha sido un
ejemplo muy básico pero pre ero ir poco a poco con este tema pues puede ser muy abundante
si no vamos poco a poco.

Comparte
0 Like 6 Share Tweet

https://cursokotlin.com/capitulo-16-persistencia-datos-shared-preferences/ 8/15
07-11-2018 Capítulo 16 - Persistencia de datos con Shared Preferences - Curso Kotlin Para android

PUBLICADO EL CURSO DE ANDROID EN KOTLIN

ETIQUETADO CON BASES DE DATOS KOTLIN, CURSO ANDROID EN KOTLIN,


PERSISTENCIA DE DATOS EN KOTLIN, SHARED PREFERENCES, SHARED
PREFERENCES KOTLIN

12 COMENTARIOS SOBRE “CAPÍTULO 16 –


PERSISTENCIA DE DATOS CON SHARED PREFERENCES”

ARIS Autor del artículo 15 OCTUBRE, 2017 / CONTESTAR

Buenas, os recuerdo que las novedades se irán publicando en la


página de Facebook de la web. https://www.facebook.com/DevKotlin/

Saludos!

HILARIO 29 OCTUBRE, 2017 / CONTESTAR

Simplemente genial, los artículos son muy concisos, explicas lo justo y


necesario para entenderlos sin que sean pesados. Estoy deseando de
que continues!!.

Por favor no lo dejes y muchas gracias por tu dedicación.

Un saludo.

https://cursokotlin.com/capitulo-16-persistencia-datos-shared-preferences/ 9/15
07-11-2018 Capítulo 16 - Persistencia de datos con Shared Preferences - Curso Kotlin Para android

ARIS Autor del artículo 29 OCTUBRE, 2017 / CONTESTAR

Estoy terminando un nuevo artículo ^^

Pingback: Capítulo 17 - Persistencia de datos con Room - Curso Kotlin Para android

IVAN RODRIGUEZ 16 DICIEMBRE, 2017 / CONTESTAR

Holaaaa, soy ivan (si de nuevo :V) ¿En que momento se instancia la
clase Prefs ? mi app se crashea al lanzarla

ARIS Autor del artículo 17 DICIEMBRE, 2017 / CONTESTAR

Buenas Iván, la clase Prefs se instancia en la clase ShareApp que


extiende de application.

class SharedApp : Application() {


companion object {
lateinit var prefs: Prefs
}

override fun onCreate() {


super.onCreate()
prefs = Prefs(applicationContext)
}
}

https://cursokotlin.com/capitulo-16-persistencia-datos-shared-preferences/ 10/15
07-11-2018 Capítulo 16 - Persistencia de datos con Shared Preferences - Curso Kotlin Para android

ARIS Autor del artículo 17 DICIEMBRE, 2017 / CONTESTAR

Me he jado bien y faltaba una cosilla que he añadido.

Recordad que para que esta clase se lance al abrir la app


debemos ir al AndroidManifest.xml y
añadir android:name=”.SharedApp ” dentro de la etiqueta 

MANAURI 6 MARZO, 2018 / CONTESTAR

hola soy nuevo me gustaria saber si puedo tener uno o mas valores
almacenados con los shared preference saludos desde mexico muy
buen tuto

ARIS Autor del artículo 6 MARZO, 2018 / CONTESTAR

Buenas, puedes almacenar todos los valores que quieras,


aunque si van a ser muchos es recomendable usar una base de
datos

BELISARIO ESPINOSA. 9 MARZO, 2018 / CONTESTAR

Hola, soy nuevo y me encontré tus artículos, que son muy buenos por
cierto, iba bien hasta este momento me tope con un error,
Caused by: kotlin.UninitializedPropertyAccessException: lateinit
property prefs has not been initialized

https://cursokotlin.com/capitulo-16-persistencia-datos-shared-preferences/ 11/15
07-11-2018 Capítulo 16 - Persistencia de datos con Shared Preferences - Curso Kotlin Para android

Ojala me pudieras ayudar.

ARIS Autor del artículo 12 MARZO, 2018 / CONTESTAR

Buenas, eso pasa porque la variable prefs no ha sido inicializada.


Se hace en el onCreate() de la clase SharedApp que extiende de
application.

class SharedApp : Application() {


companion object {
lateinit var prefs: Prefs
}

override fun onCreate() {


super.onCreate()
prefs = Prefs(applicationContext)
}
}

“Recordad que para que esta clase se lance al abrir la app


debemos ir al AndroidManifest.xml y añadir
android:name=”.SharedApp ” dentro de la etiqueta “

BELISARIO ESPINOSA. 12 MARZO,


2018 / CONTESTAR

Lo hice pero por alguna extraña razón no funcionaba,


al parecer la clase SharedApp no extendía a Aplication(), la
solución fue agregar esa misma linea al MainActivity
quedando así:

https://cursokotlin.com/capitulo-16-persistencia-datos-shared-preferences/ 12/15
07-11-2018 Capítulo 16 - Persistencia de datos con Shared Preferences - Curso Kotlin Para android

override fun onCreate(savedInstanceState: Bundle?) {


super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
SharedApp.prefs = Prefs(applicationContext)
…//}

fue lo mismo con la aplicación del artículo 17, ante todo te


agradezco hermano.

DEJA UN COMENTARIO

COMENTARIO

NOMBRE *

CORREO ELECTRÓNICO *

WEB

https://cursokotlin.com/capitulo-16-persistencia-datos-shared-preferences/ 13/15
07-11-2018 Capítulo 16 - Persistencia de datos con Shared Preferences - Curso Kotlin Para android

No soy un robot
reCAPTCHA
Privacidad - Condiciones

PUBLICAR COMENTARIO

Buscar …

BUSCAR

C O M PA R T I R

E T I Q U E TA S

android android studio kotlin aprender kotlin capitulo 2 capitulo 3 capítulo 6 capítulo 7

concatenación kotlin condiciones en kotlin curso android en kotlin curso android kotlin

curso de programacion android en kotlin curso de programación


kotlin curso de programación kotlin en español
https://cursokotlin.com/capitulo-16-persistencia-datos-shared-preferences/ 14/15
07-11-2018 Capítulo 16 - Persistencia de datos con Shared Preferences - Curso Kotlin Para android

curso kotlin curso kotlin en español curso


programacion android en kotlin curso programacion kotlin en español
curso programación kotlin de nir variables kotlin ejecutar .kt expresión when
funciones en kotlin hello world en kotlin if else en kotlin if en kotlin Instalar IntelliJ IDEA para Kotlin

instalar kotlin introducción a kotlin intrucciones condicionales en kotlin kotlin kotlin en español kotlin
lenguaje funcional kotlin switch operaciones aritmeticas kotlin parametros de entrada en kotlin parametros

de salida kotlin que es kotlin switch en kotlin tutorial kotlin usar variables kotlin var variables variables en
kotlin when en kotlin

Copyright © 2018 Curso Kotlin Para android – Tema OnePress hecho por
FameThemes

https://cursokotlin.com/capitulo-16-persistencia-datos-shared-preferences/ 15/15
07-11-2018 Capítulo 17 - Persistencia de datos con Room - Curso Kotlin Para android

CURSO KOTLIN PARA ANDROID


Aprende a programar en el lenguaje del futuro

QUIEN SOY CURSO PROGRAMACIÓN ANDROID EN KOTLIN

CONTACTO

Capítulo 17 – Persistencia de datos con Room


PÚBLICADO EN 9 NOVIEMBRE, 2017 POR ARIS

En el capítulo pasado, empezamos a conocer la persistencia de datos y su utilidad, el problema


es que como ya comenté las shared preferences están destinadas a persistir pequeños datos
de preferencia del usuario, por lo que si necesitamos guardar más información necesitamos

https://cursokotlin.com/capitulo-17-persistencia-de-datos-con-room/ 1/25
07-11-2018 Capítulo 17 - Persistencia de datos con Room - Curso Kotlin Para android

una base de datos. Aunque hay disponible muchísimas opciones muy completas, en este curso
trabajaremos siempre con Room, puesto que es la alternativa que nos propone google.

¿Qué es Room?
Room es un ORM (Object-Relational mapping) que nos permitirá trabajar de una forma más
sencilla con bases de datos SQL.

La imagen anterior nos muestra el funcionamiento de dicha herramienta que, aunque parezca
complicado al principio, es muy fácil de entender cuando nos pongamos a ello.

https://cursokotlin.com/capitulo-17-persistencia-de-datos-con-room/ 2/25
07-11-2018 Capítulo 17 - Persistencia de datos con Room - Curso Kotlin Para android

La idea es clara, tendremos una base de datos que le devolverá a nuestra app los Data Access
Objects (DAO) estos son los encargados de persistir la información en la base de datos y de
devolvernos las entities, que serán las encargadas de devolvernos la información que hemos
ido almacenando.

Una vez entendamos un poco como funciona es el momento de ponerse manos a la obra. Lo
primero que haremos será crear nuestro primer proyecto como siempre.

MisNotas
Así se llamará nuestra app y consistirá en una lista de tareas las cuales podemos marcar como
hechas o no y tendremos la posibilidad de borrarlas. Al nal del artículo lo tendréis disponible
para descargar a través de GitHub (ya haré un artículo sobre git/git ow y demás).

Lo primero que haremos será añadir todas las dependencias necesarias. Como ya he
comentado anteriormente las dependencias son pequeñas llamadas que hace nuestro chero
Gradle para implementar funciones que por defecto nuestro proyecto no tiene. Por ejemplo,
ahora necesitamos usar Room y aunque sea o cial de Google no viene por defecto en nuestro
proyecto y es muy fácil de entender. Si vinieran todas las dependencias ya implementadas al
abrir un proyecto, nuestra app pesaría muchísimo.

Así que vamos a ir al gradle del módulo app (por defecto tendremos un gradle por módulo y por
aplicación, de eso ya hablaré en otros artículos). Para localizarlo, en tan sencillo como ir a
Gradle Scripts si tenemos la vista “android”.

https://cursokotlin.com/capitulo-17-persistencia-de-datos-con-room/ 3/25
07-11-2018 Capítulo 17 - Persistencia de datos con Room - Curso Kotlin Para android

Y meteremos todas las dependencias que necesitamos. En este caso vamos a meter cuatro más,
ya luego a medida que vayamos a usarlas las iré explicando.

1     implementation 'com.android.support:design:26.1.0'
2     implementation 'com.android.support:recyclerview-v7:26.1.0'
3     implementation 'org.jetbrains.anko:anko-common:0.9'
4     implementation "android.arch.persistence.room:runtime:1.0.0-rc1"
5     kapt "android.arch.persistence.room:compiler:1.0.0-rc1"

Las meteremos donde están las demás, dentro de dependencies {}. Sincronizamos el gradle.

Creando nuestra base de datos

https://cursokotlin.com/capitulo-17-persistencia-de-datos-con-room/ 4/25
07-11-2018 Capítulo 17 - Persistencia de datos con Room - Curso Kotlin Para android

Vamos a crear un directorio nuevo llamado database dentro de nuestro proyecto y ahí
crearemos todo lo necesario siguiente el esquema que vimos antes. Necesitaremos crear 3
clases, empezaremos creando nuestra entidad que será el modelo a persistir en la base de
datos.

TaskEntity
La aplicación va a ser una lista de tareas, así que el modelo se llamará TaskEntity y contendrá 3
valores, una ID para localizar el objeto, un nombre (el de la tarea a realizar) y un Booleano que
será el que usemos para saber si la tarea está hecha o no. Así que creamos nuestra clase y la
dejamos así.

1 @Entity(tableName = "task_entity")
2 data class TaskEntity (
3         @PrimaryKey(autoGenerate = true)
4         var id:Int = 0,
5         var name:String = "",
6         var isDone:Boolean = false
7 )

Aunque es bastante pequeñita quiero recalcar algunas cosillas:

La anotación @Entity la utilizamos para añadirle un nombre a nuestra entidad como tabla de
la base de datos. Cada base de datos puede contener una o varias tablas y cada una persiste
un modelo diferente.

La anotación @PrimaryKey (autoGenerate = true) está diciendo que la variable id es un valor


que se autogenera al crear un objeto de esta clase y que no podrá repetirse. Es un valor
único con el cual podremos localizar un objeto concreto.

TaskDao
TaskDao será la interfaz que contendrá las consultas a la base de datos. Aquí distinguiremos
cuatro tipos de consultas.

@Query: Se hacen consultas directamente a la base de datos, usaremos SQL para hacerlas.
En este ejemplo haremos dos muy sencillitas, pero se pueden hacer cosas impresionantes.

@Insert: Se usará para insertar entidades a la base de datos, a diferencia de las @Query no
hay que hacer ningún tipo de consulta, sino pasar el objeto a insertar.

@Update: Actualizan una entidad ya insertada. Solo tendremos que pasar ese objeto
modi cado y ya se encarga de actualizarlo. ¿Cómo sabe que objeto hay que modi car? Pues

https://cursokotlin.com/capitulo-17-persistencia-de-datos-con-room/ 5/25
07-11-2018 Capítulo 17 - Persistencia de datos con Room - Curso Kotlin Para android

por nuestro id (recordad que es la PrimaryKey).

@Delete: Como su propio nombre indica borra de la tabla un objeto que le pasemos.

1 @Dao
2 interface TaskDao {
3     @Query("SELECT * FROM task_entity")
4     fun getAllTasks(): MutableList<TaskEntity>
5 }

Por ahora solo meteremos una query, que lo que hará será seleccionar todas las TaskEntity
que tengamos en la base de datos. Fijaros que es una interfaz en lugar de una clase, y que
contiene la anotación @Dao.

TaskDatabase
Una vez tengamos nuestro Dao y nuestra entidad, vamos a crear la base de datos que los
contendrá, en este caso se llamará TaskDatabase.

1 @Database(entities = arrayOf(TaskEntity::class), version = 1)


2 abstract class TasksDatabase : RoomDatabase() {
3     abstract fun taskDao(): TaskDao
4 }

Lo primero que debemos jarnos es en la anotación @Database, que especi ca que la entidad
será una lista de TaskEntity (entidad que ya hemos creado) y que la versión es 1. Las versiones
se usan para la posible migración de datos al actualizar la App. Imaginemos que sacamos una
segunda versión de la app y en vez de 3 parámetros almacenamos 4, no podemos cambiar
nuestra entidad de golpe pues habría problemas. Para eso se usa la versión, junto a un chero
de migración que le dice al programa que deberá hacer para pasar de la versión 1 a la 2, 3 o la
que sea.

También debemos jarnos en que nuestra clase extienda de RoomDatabase() que es una clase
que tenemos gracias a importar la dependencia de Room en nuestro gradle. Para nalizar tiene
una sola función que hace referencia al Dao que hemos creado anteriormente, si tuviésemos
más Dao’s pues habría que implementarlos ahí también.

Con esto ya tenemos nuestra base de datos preparada, ahora debemos instanciarla al inicio de
la aplicación. Como hicimos en el capítulo anterior con las Shared Preferences crearemos una
clase application para poder acceder a nuestra información en cualquier clase.

MisNotasApp

https://cursokotlin.com/capitulo-17-persistencia-de-datos-con-room/ 6/25
07-11-2018 Capítulo 17 - Persistencia de datos con Room - Curso Kotlin Para android
1 class MisNotasApp: Application() {
2  
3     companion object {
4         lateinit var database: TasksDatabase
5     }
6  
7     override fun onCreate() {
8         super.onCreate()
9         MisNotasApp.database =  Room.databaseBuilder(this, TasksDatabase
10     }
11 }

Como ya he comentado, esta clase es básicamente igual a la del capítulo anterior por lo que no
hay nada que explicar salvo que la instancia de database necesitará tres parámetros, el
contexto (this), la clase de nuestra base de datos (TasksDatabase) y el nombre que le
pondremos, en este caso la he llamado “trasks-db”.

Recordad que para que esta clase se lance al abrir la app debemos ir al AndroidManifest.xml y
añadir android:name=”.MisNotasApp” dentro de la etiqueta <Application>

activity_main
Aunque tengamos varias clases por detrás, nuestra app solo tendrá un layout, una sola vista. La
idea era crear algo sencillo y usable, por lo que me decanté por una barra superior donde
añadir las tareas y luego un RecyclerView donde se muestren todas. El XML es muy sencillito,
solo he usado algún atributo nuevo que comentaré.

https://cursokotlin.com/capitulo-17-persistencia-de-datos-con-room/ 7/25
07-11-2018 Capítulo 17 - Persistencia de datos con Room - Curso Kotlin Para android

1 <?xml version="1.0" encoding="utf-8"?>


2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/androi
3     xmlns:tools="http://schemas.android.com/tools"
4     android:layout_width="match_parent"
5     android:layout_height="match_parent"
6     android:background="@android:color/background_light"
7     tools:context="com.cursokotlin.misnotas.UI.MainActivity">
8  
9     <android.support.v7.widget.RecyclerView
10         android:id="@+id/rvTask"
11         android:layout_width="match_parent"
12         android:layout_height="match_parent"
13         android:layout_below="@+id/rlAddTask"/>
14  
15  
16     <RelativeLayout
17         android:id="@+id/rlAddTask"
18         android:layout_width="match_parent"
19         android:layout_height="wrap_content"
20         android:elevation="10dp"
21         android:layout_margin="10dp"
22         android:background="@android:color/white">
23  
24         <EditText
25             android:id="@+id/etTask"
26             android:layout_width="wrap_content"
27             android:layout_height="wrap_content"
28             android:hint="añade una tarea"
29             android:layout_alignParentLeft="true"
30             android:layout_toLeftOf="@+id/btnAddTask"
31             />
32  
33         <Button
34             android:id="@+id/btnAddTask"
35             android:layout_width="wrap_content"
36             android:layout_height="wrap_content"
37             android:layout_alignParentRight="true"
38             android:text="Añadir"/>
39  
40     </RelativeLayout>
41  
42 </RelativeLayout>

Debajo del RecyclerView he metido la barra superior. La he puesto debajo porque en los XML de
android, si imaginamos que va todo por capas, la parte inferior es la capa más visible. Por
ejemplo si pusiéramos dos fotos de tamaño completo a la pantalla, se vería la que esté en la
parte más abajo de nuestro archivo.

https://cursokotlin.com/capitulo-17-persistencia-de-datos-con-room/ 8/25
07-11-2018 Capítulo 17 - Persistencia de datos con Room - Curso Kotlin Para android

A parte de eso conocemos todos los atributos de la vista excepto android:elevation que lo que
hace es dar una elevación a nuestro componente añadiéndole una sombra por debajo. El efecto
es el siguiente.

MainActivity
Ya tenemos nuestra vista preparada, es el momento de empezar a generar la lógica.
Empezamos creando las variables necesarias.

1     lateinit var recyclerView: RecyclerView


2     lateinit var tasks: MutableList<TaskEntity>

Ahora nos vamos al OnCreate de nuestra actividad, lo primero que haremos será instanciar
tasks como una arrayList y acto seguido llamaremos a la función getTasks() que vamos a crear.
Esta función será la encargada de acceder a nuestro DAO para hacer la primera consulta,
recuperar todas las entidades que el usuario tenga guardadas. Así que por ahora dejamos el
OnCreate así.

1 override fun onCreate(savedInstanceState: Bundle?) {


2         super.onCreate(savedInstanceState)
3         setContentView(R.layout.activity_main)
4         tasks = ArrayList()
5         getTasks()
6 }

Ahora antes de seguir tengo que hacer un poco de hincapié en los hilos. Los hilos son los que
permiten la multitarea de un dispositivo, por ejemplo en un hilo puedes ir guardando
información asíncronamente (por detrás) mientras el usuario sigue haciendo cosas. En Android,
el hilo principal es el encargado de la parte visual de la aplicación, por lo que no nos deja
acceder a la base de datos desde ahí, por ello crearemos un hilo secundario que de modo
asíncrono hará la petición a la base de datos y recuperará la información que necesitemos.

https://cursokotlin.com/capitulo-17-persistencia-de-datos-con-room/ 9/25
07-11-2018 Capítulo 17 - Persistencia de datos con Room - Curso Kotlin Para android

Como este capítulo no va de hilos, no solo lo he resumido mucho sino que lo voy a hacer de la
manera más sencilla (en un futuro haré un artículo dedicado a ello). Para este n vamos a usar
Anko, una librería muy completa para Kotlin que nos hará más sencillas muchas tareas del día a
día. Anko ya lo implementamos al principio del capítulo en las dependencias.

1   fun getTasks() {
2         doAsync {
3             tasks = MisNotasApp.database.taskDao().getAllTasks()
4             uiThread {
5                 setUpRecyclerView(tasks)
6             }
7         }
8     }

Gracias a Anko la función queda muy sencilla. Todo lo que tengamos que hacer en el segundo
hilo asíncrono, lo meteremos dentro de doAsync{}  y una vez haya acabado,
usando uiThead{} podemos decir que haga algo en el hilo principal, el de la vista. Nosotros
hemos asignado a tasks los valores que recuperamos de nuestra base de datos, y cuando los
completa, llamamos al método setUpRecyclerView(tasks) que será el que con gure nuestro
RecyclerView.

Pero antes de mostraros el método anterior vamos a crear nuestro adapter, que a diferencia del
primero que vimos hace unos capítulos, este tendrá diferentes eventos para capturar los clicks
del usuario.

TasksAdapter
A diferencia de nuestro último adapter que tenía un constructor para pasar los parámetros, en
este caso usaremos la propia clase para hacerlo. Se puede hacer de ambas formas pero así vais
viendo formas diferentes que más se acomoden a vuestro modo de trabajo.

Antes de empezar a trabajar con el layout de la celda. Vamos a crear algo muy sencillito así que
creamos un nuevo layout llamado item_task.xml.

https://cursokotlin.com/capitulo-17-persistencia-de-datos-con-room/ 10/25
07-11-2018 Capítulo 17 - Persistencia de datos con Room - Curso Kotlin Para android

1 <?xml version="1.0" encoding="utf-8"?>


2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3     android:layout_width="match_parent"
4     android:layout_height="wrap_content"
5     xmlns:tools="http://schemas.android.com/tools"
6     android:orientation="horizontal"
7     android:layout_margin="10dp">
8  
9     <CheckBox
10         android:id="@+id/cbIsDone"
11         android:layout_width="wrap_content"
12         android:layout_height="wrap_content"
13         android:layout_marginRight="10dp"
14         android:layout_marginEnd="10dp" />
15  
16     <TextView
17         android:id="@+id/tvTask"
18         android:layout_width="wrap_content"
19         android:layout_height="wrap_content"
20         android:textStyle="bold"
21         android:textSize="18sp"
22         tools:text="Test"/>
23  
24 </LinearLayout>

Nos quedará una celda muy sencilla. La idea es que cuando marquemos el Checkbox se
actualice en la base de datos el objeto y si hacemos click en cualquier otra parte de la vista se
borre de base de datos.

Así que esta vez le pasaremos 3 parámetros, la lista de tareas que tenemos almacenadas en
nuestra base de datos y funciones. Estas funciones nos permitirán recuperar el evento del click
en cada una de las celdas, ya sea la vista completa o un componente concreto.

1 class TasksAdapter(
2         val tasks: List<TaskEntity>,
3         val checkTask: (TaskEntity) -> Unit,
4         val deleteTask: (TaskEntity) -> Unit) : RecyclerView.Adapter<Task

https://cursokotlin.com/capitulo-17-persistencia-de-datos-con-room/ 11/25
07-11-2018 Capítulo 17 - Persistencia de datos con Room - Curso Kotlin Para android

Ahora en el onBindViewHolder haríamos lo mismo de siempre pero añadiéndole


el setOnClickListener a cada uno de los componentes que nos interese, en este caso yo se lo he
puesto al checkbox y como quiero controlar el click en cualquier otra parte de la vista podemos
acceder a itemView que nos devuelve la celda completa.

1 override fun onBindViewHolder(holder: ViewHolder, position: Int) {


2         val item = tasks[position]
3         holder.bind(item, checkTask, deleteTask)
4     }

Y ya completamos TaskAdapter con los dos métodos que nos


faltan onCreateViewHolder y getItemCount. Estos métodos los dejaremos por defecto así que no
voy a explicar nada ya que lo he hecho en capítulso anteriores.

1     override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Vi


2         val layoutInflater = LayoutInflater.from(parent.context)
3         return ViewHolder(layoutInflater.inflate(R.layout.item_task, pare
4     }
5  
6     override fun getItemCount(): Int {
7         return tasks.size
8     }

Para nalizar la clase ViewHolder que solo tendrá de novedad en la función bind, a través
de .isChecked podemos iniciar la vista con el checkbox marcado o no, así que comprobaremos si
está a true nuestra entidad y si es así pues lo marcamos.

Una vez con gurada la celda, le añadimos .setOnClickListener a nuestro checkBox y al itemView


que es el componente completo pasando el propio objeto.

1   class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {


2         val tvTask = view.findViewById<TextView>(R.id.tvTask)
3         val cbIsDone = view.findViewById<CheckBox>(R.id.cbIsDone)
4  
5        fun bind(task: TaskEntity, checkTask: (TaskEntity) -> Unit, delet
6             tvTask.text = task.name
7             cbIsDone.isChecked = task.isDone
8             cbIsDone.setOnClickListener{checkTask(task)}
9             itemView.setOnClickListener { deleteTask(task) }
10         }
11     }

Puedes ver la clase completa haciendo click aquí.

Volvemos al MainActivity
https://cursokotlin.com/capitulo-17-persistencia-de-datos-con-room/ 12/25
07-11-2018 Capítulo 17 - Persistencia de datos con Room - Curso Kotlin Para android

Con nuestro adapter completo es el paso de con gurarlo desde MainActivity con nuestra
función setUpRecyclerView() a la cual le pasaremos la lista de tareas que hemos recuperado.

1 fun setUpRecyclerView(tasks: List<TaskEntity>) {


2         adapter = TasksAdapter(tasks, { updateTask(it) }, {deleteTask(it)
3         recyclerView = findViewById(R.id.rvTask)
4         recyclerView.setHasFixedSize(true)
5         recyclerView.layoutManager = LinearLayoutManager(this)
6         recyclerView.adapter = adapter
7     }

Debemos jarnos que al instanciar el adapter le pasamos tres parámetros, la lista de tareas, 
updateTask(it) y deleteTask(it). Estos no son parámetros sino métodos que tendremos en el
MainActivity, que serán llamados automáticamente cuando se ejecute el evento del click que
con guramos en el adapter.

Antes de mostraron esos dos métodos, vamos a con gurar el botón de añadir tareas, que lo
que hará será crear un objeto Task, almacenarlo en base de datos y luego añadirlo a la lista que
tiene el adapter. Lo primero que haremos será ir a nuestro DAO y añadir una nueva función de
insertar.

1 @Insert
2 fun addTask(taskEntity : TaskEntity):Long

Simplemente recibirá un objeto TaskEntity y lo añadirá a la base de datos. Fijaros que devuelve
un Long, eso es porque nos dará automáticamente la ID del item añadido.

Nos vamos a nuestro onCreate del MainAcitivity y añadimos lo siguiente.

1 btnAddTask.setOnClickListener {
2             addTask(TaskEntity(name = etTask.text.toString()))}

Simplemente le hemos asignado al evento del click un método llamado addTask() al cual le


pasamos un objeto nuevo con el texto de la celda. Dicha función añadirá a base de datos la
tarea, luego recuperemos dicha tarea y la añadiremos a la lista del adapter. Hay varias formas
de hacer esto mejor, pero he ido poniendo varias formas en cada una de las peticiones a la base
de datos para poder observarlas.

https://cursokotlin.com/capitulo-17-persistencia-de-datos-con-room/ 13/25
07-11-2018 Capítulo 17 - Persistencia de datos con Room - Curso Kotlin Para android

1 fun addTask(task:TaskEntity){
2         doAsync {
3             val id = MisNotasApp.database.taskDao().addTask(task)
4             val recoveryTask = MisNotasApp.database.taskDao().getTaskByI
5             uiThread {
6                 tasks.add(recoveryTask)
7                 adapter.notifyItemInserted(tasks.size)
8                 clearFocus()
9                 hideKeyboard()
10             }
11         }
12     }

Así que lo que estamos haciendo es añadir la tarea y luego recuperamos dicho objeto a través
de getTaskById pasándole la ID que nos devuelve addTask. Obviamente debemos añadir a
nuestro DAO la función de recuperar el item.

1 @Query("SELECT * FROM task_entity where id like :arg0")


2 fun getTaskById(id: Long): TaskEntity

Cuando hemos acabado de realizar esto, en el hilo principal añadimos el objeto recuperado a la
lista, le decimos al adapter que hemos añadido un objeto nuevo a través
de adapter.notifyItemInserted (hay que pasarle pa posición, como es el último objeto añadido,
podemos saber cual es recuperando el tamaño de la lista) y luego los
métodos clearFocus() y hideKeyboard() simplemente nos quitarán el texto del editText y bajarán
el teclado.

1 fun clearFocus(){
2    etTask.setText("")
3 }
4  
5 fun Context.hideKeyboard() {
6     val inputMethodManager = getSystemService(Activity.INPUT_METHOD_SERVI
7     inputMethodManager.hideSoftInputFromWindow(currentFocus.windowToken,
8 }

Con esto ya podemos insertar tareas en nuestra app.

https://cursokotlin.com/capitulo-17-persistencia-de-datos-con-room/ 14/25
07-11-2018 Capítulo 17 - Persistencia de datos con Room - Curso Kotlin Para android

Una vez tengamos tareas, pasamos a actualizarlas con updateTask() que será el encargado de
cambiar en la base de datos el booleano que marca si la tarea está hecha o no, así que nos
volvemos a nuestro DAO y añadimos un update.

1 @Update
2 fun updateTask(taskEntity: TaskEntity):Int

https://cursokotlin.com/capitulo-17-persistencia-de-datos-con-room/ 15/25
07-11-2018 Capítulo 17 - Persistencia de datos con Room - Curso Kotlin Para android

Y su respectivo método en la actividad principal es muy sencillo, simplemente recibe el objeto,


nosotros cambiamos el booleano por su opuesto (si es true, lo ponemos a false) y se lo
mandamos al DAO.

1 fun updateTask(task: TaskEntity) {


2         doAsync {
3             task.isDone = !task.isDone
4             MisNotasApp.database.taskDao().updateTask(task)
5         }
6     }

Recordamos que con la exclamación delante de un booleano nos da el valor contrario.

Para nalizar nuestra app nos falta la opción de borrar tareas tocando cualquier parte de la
celda menos el checkBox que ya hace una función de actualizar. Así que volvemos al DAO y
hacemos una función @Delete.

1 @Delete
2 fun deleteTask(taskEntity: TaskEntity):Int

En el método deleteTask() debemos hacer algo más, para empezar, buscaremos en nuestra


lista tasks la posición del item que vamos a borrar para tener una referencia. Para ello
usaremos la función de las listas indexOf(item) que nos devolverá dicha posición y la
almacenamos en una variable, luego borraremos el objeto de la base de datos y de nuestra lista
y acabaremos en el hilo principal avisando al adapter que hemos removido un objeto,
pasándole la posición.

1 fun deleteTask(task: TaskEntity){


2         doAsync {
3             val position = tasks.indexOf(task)
4             MisNotasApp.database.taskDao().deleteTask(task)
5             tasks.remove(task)
6             uiThread {
7                 adapter.notifyItemRemoved(position)
8             }
9         }
10     }

Puedes ver la clase completa haciendo click aquí.

https://cursokotlin.com/capitulo-17-persistencia-de-datos-con-room/ 16/25
07-11-2018 Capítulo 17 - Persistencia de datos con Room - Curso Kotlin Para android

Este artículo ha sido un poquito más “intenso” pero ya empezamos a entrar en verdadera
materia. Os recuerdo que podéis descargar el proyecto completo desde mi GitHub. Y que si
tenéis alguna duda podéis dejarla en los comentarios.

Comparte

https://cursokotlin.com/capitulo-17-persistencia-de-datos-con-room/ 17/25
07-11-2018 Capítulo 17 - Persistencia de datos con Room - Curso Kotlin Para android

0 Tweet

PUBLICADO EL CURSO DE ANDROID EN KOTLIN

ETIQUETADO CON BASES DE DATOS EN ANDROID, CURSO ANDROID EN


KOTLIN, CURSO KOTLIN EN ESPAÑOL, GUIA ANDROID, KOTLIN ESPAÑOL, ORM
ANDROID, ORM ROOM KOTLIN, ROOM, ROOM KOTLIN, TUTORIAL ROOM,
TUTORIAL ROOM ESPAÑOL

16 COMENTARIOS SOBRE “CAPÍTULO 17 –


PERSISTENCIA DE DATOS CON ROOM”

IVÁN RODRÍGUEZ 9 DICIEMBRE, 2017 / CONTESTAR

Que vaina bacana bro ! Quiero hacer una WebView desde una activity,
¿Que me recomiendas?. Quiero hacer algo así como de noticias pero
quiero desarrollar las noticias con una app web y la app móvil que
muestre la web pero de cierta manera.

ARIS Autor del artículo 10 DICIEMBRE, 2017 / CONTESTAR

Vuenas @Iván lo correcto sería crear un servicio GET y desde la


app haces una petición y recuperas las noticias en un JSON o en
XML. Si todavía se te escapan un poco los conocimientos,
puedes empezar a usar un webview que apunte a una url, pero
no sería ni lo más e ciente ni lo mejor visualmente.

Saludos

https://cursokotlin.com/capitulo-17-persistencia-de-datos-con-room/ 18/25
07-11-2018 Capítulo 17 - Persistencia de datos con Room - Curso Kotlin Para android

AJ 21 DICIEMBRE, 2017 / CONTESTAR

Buenas!! Me están sirviendo de mucho tus artículos para iniciarme en


Kotlin y refrescar Android, que lo tenía algo oxidado.
Me ha surgido un par de dudas acerca de Room:

1. ¿Cómo se declararían en la clase abstracta TasDatabase si se diera


el caso de tener varias tablas?
2. En el mismo caso de tener varias tablas, ¿Se tendría que crear una
interfaz DAO para cada una?

Muchas gracias y sigue así!

ARIS Autor del artículo 26 DICIEMBRE, 2017 / CONTESTAR

Buenas, respondiendo a la primera pregunta, sería usando la


coma, por ejemplo.

@Database(entities = {Task.class, Category.class}, version = 2)

En caso de tener varias tablas, lo correcto sería usar varias DAO,


separándolas por tablas o casos de uso.

Un saludo

ANTONIO 3 ENERO, 2018 / CONTESTAR

Una pregunta, ¿Sabes de qué modo se pueden relacionar dos tablas


de muchos a mucho en Room?

https://cursokotlin.com/capitulo-17-persistencia-de-datos-con-room/ 19/25
07-11-2018 Capítulo 17 - Persistencia de datos con Room - Curso Kotlin Para android

MANUEL 23 FEBRERO, 2018 / CONTESTAR

Hola, estuve siguiendo el curso de kotlin y pero siempre me da un


error apenas inicio un proyecto, lo que hice para solucionarlo es
agregar una linea en gradle.properties, la linea es:
android.enableAapt2=false
Alguno de los que realizo el ejemplo les dió este error? es para saber
si hay otra forma de solucionarlo sin tener que desactivar nada

ARIS Autor del artículo 23 FEBRERO, 2018 / CONTESTAR

Puedes comentar que error te salía?

MANUEL 26 MARZO, 2018 / CONTESTAR

El error que me salìa es el siguiente:

Error:java.util.concurrent.ExecutionException:
com.android.tools.aapt2.Aapt2Exception: AAPT2 error:
check logs for details

y abajo este otro:

Error:Execution failed for task


‘:app:mergeDebugResources’.
> Error: java.util.concurrent.ExecutionException:
com.android.tools.aapt2.Aapt2Exception: AAPT2 error:
check logs for details

https://cursokotlin.com/capitulo-17-persistencia-de-datos-con-room/ 20/25
07-11-2018 Capítulo 17 - Persistencia de datos con Room - Curso Kotlin Para android

MUN BONECCI 14 MARZO, 2018 / CONTESTAR

En TaskDao me daba error en :arg0 y despues de investigar la


solución que tuve fue esta:
@Query(“SELECT * FROM task_entity where id like :id”)
fun getTaskById(id: Long): TaskEntity reemplace: arg0 por: id y me
soluciono el error. Saludos y gracias por los tutoriales!!

MANUEL 26 MARZO, 2018 / CONTESTAR

El error que me salìa es el siguiente:

Error:java.util.concurrent.ExecutionException:
com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for
details

y abajo este otro:

Error:Execution failed for task ‘:app:mergeDebugResources’.


> Error: java.util.concurrent.ExecutionException:
com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for
details

MANUEL 26 MARZO, 2018 / CONTESTAR

Me interesa saber como utilizar el comodìn para hacer las consultas,


por ejemplo una consulta de este tipo:

SELECT * FROM task_entity WHERE name LIKE ‘%limpiar%’

https://cursokotlin.com/capitulo-17-persistencia-de-datos-con-room/ 21/25
07-11-2018 Capítulo 17 - Persistencia de datos con Room - Curso Kotlin Para android

Perdón por mi ignorancia, pero sería algo así como concatenar ‘%’
antes y al nal del argumento antes de llamar a la funcion? o se
puede incluir el caracter ‘%’ dentro de la consulta. algo así como

SELECT * FROM task_entity WHERE name LIKE %:arg0%

ARIS Autor del artículo 6 ABRIL, 2018 / CONTESTAR

Buenas, sinceramente tendría que investigarlo, esto ya es SQL,


te recomiendo echarle un ojo a este pequeño curso
http://www.maestrosdelweb.com/tutsql1/

Saludos

SALVADOR 12 ABRIL, 2018 / CONTESTAR

Algun ejemplo de retro t usando Kotllin

ARIS Autor del artículo 13 ABRIL, 2018 / CONTESTAR

Ese es el siguiente capítulo que estoy preparando

LUCIA C 9 JUNIO, 2018 / CONTESTAR

Si tendrás un ejemplo con retro t, saludos

https://cursokotlin.com/capitulo-17-persistencia-de-datos-con-room/ 22/25
07-11-2018 Capítulo 17 - Persistencia de datos con Room - Curso Kotlin Para android

UNGRIM 11 JUNIO, 2018 / CONTESTAR

Esto se podría utilizar para por ejemplo un login de acceso


accediendo desde una db alojada en mysql??

DEJA UN COMENTARIO

COMENTARIO

NOMBRE *

CORREO ELECTRÓNICO *

WEB

https://cursokotlin.com/capitulo-17-persistencia-de-datos-con-room/ 23/25
07-11-2018 Capítulo 17 - Persistencia de datos con Room - Curso Kotlin Para android

No soy un robot
reCAPTCHA
Privacidad - Condiciones

PUBLICAR COMENTARIO

Buscar …

BUSCAR

C O M PA R T I R

E T I Q U E TA S

android android studio kotlin aprender kotlin capitulo 2 capitulo 3 capítulo 6 capítulo 7

concatenación kotlin condiciones en kotlin curso android en kotlin curso android kotlin

curso de programacion android en kotlin curso de programación


kotlin curso de programación kotlin en español
curso kotlin curso kotlin en español curso
https://cursokotlin.com/capitulo-17-persistencia-de-datos-con-room/ 24/25
07-11-2018 Capítulo 17 - Persistencia de datos con Room - Curso Kotlin Para android

programacion android en kotlin curso programacion kotlin en español


curso programación kotlin de nir variables kotlin ejecutar .kt expresión when
funciones en kotlin hello world en kotlin if else en kotlin if en kotlin Instalar IntelliJ IDEA para Kotlin

instalar kotlin introducción a kotlin intrucciones condicionales en kotlin kotlin kotlin en español kotlin
lenguaje funcional kotlin switch operaciones aritmeticas kotlin parametros de entrada en kotlin parametros

de salida kotlin que es kotlin switch en kotlin tutorial kotlin usar variables kotlin var variables variables en
kotlin when en kotlin

Copyright © 2018 Curso Kotlin Para android – Tema OnePress hecho por
FameThemes

https://cursokotlin.com/capitulo-17-persistencia-de-datos-con-room/ 25/25
07-11-2018 Capítulo 18 - Componentes personalizados [Primera parte] - Curso Kotlin Para android

CURSO KOTLIN PARA ANDROID


Aprende a programar en el lenguaje del futuro

QUIEN SOY CURSO PROGRAMACIÓN ANDROID EN KOTLIN

CONTACTO

Capítulo 18 – Componentes personalizados


[Primera parte]
PÚBLICADO EN 21 OCTUBRE, 2018 POR ARIS

https://cursokotlin.com/capitulo-18-componentes-personalizados-android/ 1/11
07-11-2018 Capítulo 18 - Componentes personalizados [Primera parte] - Curso Kotlin Para android

A lo largo de los capítulos hemos aprendido a utilizar varios de los componentes que Android
nos proporciona, pero hay veces que necesitamos modi car estos para crear una lógica distinta
o alguna característica que no poseen, por ello tenemos la posibilidad de hacer componentes
personalizados o custom views.

El porqué de hacer vistas personalizadas en vez de aplicar la misma lógica siempre que
necesitemos es sencillo. Creando nuestro componente lo podremos reutilizar todas las veces
que queramos, sin tener que duplicar código y lo más importante, que si un día queremos
mejorarlo solo tendremos que tocar el código de una clase para mejorar todos los
componentes de ese tipo que hayamos aplicado en la app. También se conoce como abstraer la
lógica.

Para empezar crearemos un nuevo proyecto, en este caso lo llamaré CustomViewKotlin y os


recuerdo que podéis encontrar todos los ejemplos del blog en mi Github.

Una vez creado, crearemos una nueva clase llamada OddEvenEditText. Este editText
personalizado se encargará de comprobar si el número que vamos a ir escribiendo es par o
impar, modi cando la linea inferior del componente de color.

Para modi car un componente ya existente como es el editText, tenemos que crear una clase y
extender de él. Extender nos permite coger toda la lógica del componente (sin modi carlo) y
poder añadir todas las nuevas funcionalidades que nos interesen sin tener que crearlo desde
cero.

Para extender de una clase solo tenemos que añadir dos puntos después del nombre de la
clase y decidir la clase que queremos extender, en este caso AppCompatEditText, que son la
última versión de los editText corrientes.

1 class OddEvenEditText : AppCompatEditText{


2  
3 }

Cuando lo hayas añadido, te aparecerá un error.

this type has a constructor and thus must be initialized here

https://cursokotlin.com/capitulo-18-componentes-personalizados-android/ 2/11
07-11-2018 Capítulo 18 - Componentes personalizados [Primera parte] - Curso Kotlin Para android

Nuestro componente al extender de otro ya existente necesita implementar sus constructores,


que son los únicos caminos abiertos para poder llamar a esa clase.

Error de componente personalizado sin constructores.

Si podemos el ratón encima del error y pulsamos encima de la bombilla (o option + enter en
MacOS) nos saldrán las posibles soluciones, si nos jamos todas nos piden los constructores, así
que añadiremos los tres que necesitan.

1 class OddEvenEditText : AppCompatEditText{


2  
3     constructor(context: Context) : super(context)
4  
5     constructor(context: Context, attrs: AttributeSet) : super(context, a
6  
7     constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int)
8 }

Ahora tenemos un componente creado y funcionando, pero que no tiene ninguna mejora o
característica respecto a un editText normal. Por lo que vamos a crear una función init{} que es
una función que se ejecutará nada más crearse la clase (como el método OnCreate() de las
activities).

1 init {
2         inputType = InputType.TYPE_CLASS_NUMBER
3     
4     }

Por el momento solo hemos modi cado su imputType, que es el formato de texto que soporta
el editText. Añadiendo TYPE_CLASS_NMBER le decimos que solo soportará números enteros, y
al hacer clic en él, el teclado que se nos muestra será numérico.

https://cursokotlin.com/capitulo-18-componentes-personalizados-android/ 3/11
07-11-2018 Capítulo 18 - Componentes personalizados [Primera parte] - Curso Kotlin Para android

https://cursokotlin.com/capitulo-18-componentes-personalizados-android/ 4/11
07-11-2018 Capítulo 18 - Componentes personalizados [Primera parte] - Curso Kotlin Para android

Ejemplo de un teclado numérico.

Ahora añadiremos la función addTextChangedListener() que será un listener o escuchador que


nos avisará cada vez que se modi que el texto del componente.

1 addTextChangedListener(object : TextWatcher {
2             override fun afterTextChanged(p0: Editable?) {
3             }
4  
5             override fun beforeTextChanged(p0: CharSequence?, p1: Int, p
6             }
7  
8             override fun onTextChanged(p0: CharSequence?, p1: Int, p2: I
9             }
10         })

Este método implementa tres funciones, las cuales se irán llamando en distintos momentos
desde que escribimos un carácter en nuestro componente:

beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int).


Entrará aquí cuando los caracteres van a ser reemplazados por uno nuevo. Este texto no es
editable.
Uso: Cuando necesitas ver el texto antiguo antes de cambiar.

https://cursokotlin.com/capitulo-18-componentes-personalizados-android/ 5/11
07-11-2018 Capítulo 18 - Componentes personalizados [Primera parte] - Curso Kotlin Para android

onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int).


Los cambios ya se han aplicado y el texto ha cambiado. Este texto no es editable.
Uso: Cuando necesitas ver los caracteres que han cambiado.

afterTextChanged(p0: Editable?).
Igual que la función anterior pero el texto aquí si es editable..
Uso: Cuando necesitas ver y editar el nuevo texto añadido.Fuente: StackOver ow.

Por ello ahora meteremos la lógica necesaria para el cambio de color de la barra inferior dentro
de afterTextChange().

1 if(!p0.isNullOrEmpty()){
2                     if(p0.toString().toDouble()%2 == 0.0){
3                         background.setColorFilter(ContextCompat.getColor(
4                     }else{
5                         background.setColorFilter(ContextCompat.getColor(
6                     }
7                 }

Analicemos el código anterior, primero comprobaremos si el texto que se ha modi cado está
vacío o es nulo, si pasa una de esas dos cosas no haremos nada. Si por el contrario no lo es,
cogeremos nuestro editable (p0 se llama por defecto) y lo pasaremos a String para poder
pasarlo luego a Doble.

¿Por Qué Double y no Int? Pues si recordamos el capítulo 4 – Tipos de variables, recordaremos


que un Int  es más pequeño que un Double, y si escribimos un número demasiado largo la app
daría error.

Luego comprobamos si el módulo del valor entre dos es igual a cero, si esto es así, signi ca que
el número es par, de lo contrario no. Para terminar solo tendríamos que llamar al background
del componente y modi car la barra inferior con la función setColorFilter().

Puedes ver la clase entera aquí.

Es posible que red y green se marquen como error, pues son dos colores que he creado yo.
Para añadirlos vamos a app/src/main/res/values/colors.xml (si no existe lo podemos crear
nosotros mismos) y añadimos los dos colores.

1     <color name="red">#ff0004</color>
2     <color name="green">#25ac00</color>

Ahora nos iremos al layout del MainActivity, y aprenderemos a llamar a nuestro componente.

https://cursokotlin.com/capitulo-18-componentes-personalizados-android/ 6/11
07-11-2018 Capítulo 18 - Componentes personalizados [Primera parte] - Curso Kotlin Para android

Obviamente no podremos llamarlo con la etiqueta editText, sino que tendremos que llamar a la
ruta de la clase, quedando así mi layout.

1 <?xml version="1.0" encoding="utf-8"?>


2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3     android:layout_width="match_parent"
4     android:layout_height="match_parent"
5     android:orientation="vertical">
6  
7     <com.cursokotlin.customviewkotlin.OddEvenEditText
8         android:layout_width="match_parent"
9         android:layout_height="wrap_content" />
10  
11 </LinearLayout>

Obviamente el tuyo será parecido pero con tu nombre de paquete. Si nos jamos en la preview
se ve como un editText normal y corriente.

Si ejecutamos ahora la aplicación, veremos que funciona correctamente.

https://cursokotlin.com/capitulo-18-componentes-personalizados-android/ 7/11
07-11-2018 Capítulo 18 - Componentes personalizados [Primera parte] - Curso Kotlin Para android

Resultado de nuestro componente.


https://cursokotlin.com/capitulo-18-componentes-personalizados-android/ 8/11
07-11-2018 Capítulo 18 - Componentes personalizados [Primera parte] - Curso Kotlin Para android

Comparte
0 Like 5 Share Tweet

PUBLICADO EL CURSO DE ANDROID EN KOTLIN

ETIQUETADO CON ANDROID, APRENDER A PROGRAMAR EN KOTLIN,


COMPONENTES EN ANDROID, COMPONENTES PERSONALIZADOS EN KOTLIN,
CUSTOM VIEWS, CUSTOM VIEWS EN ANDROID, CUSTOM VIEWS KOTLIN,
KOTLIN, VISTAS PERSONALIZADAS EN ANDROID, VISTAS PERSONALIZADAS EN
KOTLIN

DEJA UN COMENTARIO

COMENTARIO

NOMBRE *

https://cursokotlin.com/capitulo-18-componentes-personalizados-android/ 9/11
07-11-2018 Capítulo 18 - Componentes personalizados [Primera parte] - Curso Kotlin Para android

CORREO ELECTRÓNICO *

WEB

No soy un robot
reCAPTCHA
Privacidad - Condiciones

PUBLICAR COMENTARIO

Buscar …

BUSCAR

C O M PA R T I R

E T I Q U E TA S

https://cursokotlin.com/capitulo-18-componentes-personalizados-android/ 10/11
07-11-2018 Capítulo 18 - Componentes personalizados [Primera parte] - Curso Kotlin Para android

android android studio kotlin aprender kotlin capitulo 2 capitulo 3 capítulo 6 capítulo 7

concatenación kotlin condiciones en kotlin curso android en kotlin curso android kotlin

curso de programacion android en kotlin curso de programación


kotlin curso de programación kotlin en español
curso kotlin curso kotlin en español curso
programacion android en kotlin curso programacion kotlin en español
curso programación kotlin de nir variables kotlin ejecutar .kt expresión when
funciones en kotlin hello world en kotlin if else en kotlin if en kotlin Instalar IntelliJ IDEA para Kotlin

instalar kotlin introducción a kotlin intrucciones condicionales en kotlin kotlin kotlin en español kotlin
lenguaje funcional kotlin switch operaciones aritmeticas kotlin parametros de entrada en kotlin parametros

de salida kotlin que es kotlin switch en kotlin tutorial kotlin usar variables kotlin var variables variables en
kotlin when en kotlin

Copyright © 2018 Curso Kotlin Para android – Tema OnePress hecho por
FameThemes

https://cursokotlin.com/capitulo-18-componentes-personalizados-android/ 11/11