Datos en tiempo real con Firebase en Android

Cuando creamos una aplicación con Android Studio usando Firebase, es importante identificar las opciones que firebase y su librería para Android nos ofrece, esto nos ayudará a sacar el mayor provecho de firebase, en este post voy a mostrarte en detalle como funciona el concepto de “Data Syncronization”.

Si no sabes como utilizar o como dar los primeros pasos con Firebase y Android Studio, te recomiendo que mires este post primero: Introducción a Firebase para Android, allí te enseño como configurar el contexto y todo lo que requieres para empezar correctamente con Firebase en Android Studio. Acceder a los datos de Firebase desde nuestra aplicación es muy simple, simplemente se require declarar una variable de tipo Firebase.

  • java
1
Firebase mRef;

Esta variable debe ser inicializada con un objeto de tipo Firebase, cuyo constructor recibe la URL de tu endpoint en firebase.google.com, es decir:

  • java
1
mRootRef = new Firebase("https://miendpointenfirebase.firebaseio.com");

Con esto tenemos enlazada nuestra aplicación con el Endpoint de Firebase. Supongamos que adentro de nuestro enpoint tenemos un objeto llamado mensaje, y queremos mostrar el contenido de dicho objeto en nuestra aplicación (Mira de que te hablo: ) Screen Shot 2016-05-18 at 4.13.57 PM Para mostrar este mensaje en un TextView, podriamos hacer lo siguiente:

  1. Obtenemos la referencia al TextView (Recuerda que esto debe estar en la definición de la clase)
  • java
1
mTextView = (TextView)findViewById(R.id.textView);
  1. Obtenemos la referencia al objeto mensaje de nuestro Endpoint, (Esto debe estar en onStart() )
  • java
1
Firebase messagesRef = mRootRef.child("messages");
  1. Le añadimos un listener que nos permita conocer cuando cambia este mensaje:
  • java
1
2
3
4
5
6
7
8
9
10
11
messagesRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//Cada vez que el mensaje cambie, se va a llamar este bloque de codigo
}

@Override
public void onCancelled(FirebaseError firebaseError) {

}
});
  1. Asignamos el mensaje a nuestro TextView, para eso es necesario añadir exactamente que tipo de dato vamos a recibir, por eso es necesario dentro de la función getValue añadir el String.class:
  • java
1
2
3
4
5
6
7
8
9
10
11
12
13
messagesRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//Cada vez que el mensaje cambie, se va a llamar este bloque de codigo
String mensaje = dataSnapshot.getValue(String.class);
mTextView.setText(mensaje);
}

@Override
public void onCancelled(FirebaseError firebaseError) {

}
});

De esta manera cada vez que cambia el valor del “mensaje” cambiará automáticamente y en tiempo real en nuestra aplicación.
Screen Shot 2016-05-18 at 4.14.50 PM
Screen Shot 2016-05-18 at 4.11.25 PM

A estas alturas te estarás preguntando para que sirve entonces el método onCancelled, simplemente dicho método se ejecutará si ocurre algún problema tratando de acceder al objeto en nuestro Endpoint.

Eso es todo, espero que este post te sea de utilidad, Si tienes alguna duda no dudes en dejarme un comentario en la parte de abajo, recuerda que si te gustó también puedes compartir usando los links a las redes sociales en la parte de abajo.

Copyrights © 2018 Sebastian Gomez. All Rights Reserved.

Sobre mí

sebastianMi nombre es Sebastián Gómez, soy ingeniero de sistemas e Informática y Magister en Ingeniería de Sistemas de la Universidad Nacional de Colombia.

Actualmente trabajo en Globant como Web UI Developer con énfasis en aplicaciones híbridas y cross compiladas. Soy el organizador del Google Developers Group de Medellín, así que contactame si quieres dar alguna charla o participar actuamente de esta comunidad.

He participado en una Startup Colombiana llamada SponzorMe al lado de Carlos Rojas y fuí participante de Startup Chile a pesar de no haber continuado con esta startup me apasiona el emprendimiento y me gusta aconsejar y ayudar startups como mentor técnico. También he trabajado en empresas Americanas como StudioHyperset en Estados Unidos y para Measured Medium. Mi interés y mi experiencia es el desarrollo de web y móvil full stack como Front-end con Javascript. Me apasiona desarrollar software, escribir código y enseñar lo que aprendo día a día.

También he trabajado como profesor en diferentes universidades en Medellín Colombia, con tematicas relacionadas con la Inteligencia Artificial, Bases de datos, programación orientada a objetos, minería de datos, desarrollo de software, desarrollo móvil y desarrollo web.

Me encanta escribir código rápido y prototipar de una manera accelerada si quieres ver que hago día a día puedes darle un vistazo a mi codepen:  https://codepen.io/seagomezar/.

Todos los días trato de crear o participar en proyectos, la mayoría open source, así que puede chequear mi GitHub:  https://github.com/seagomezar.

Mi áreas de investigación académica son: Ingeniería de software, Ingeniería de requisitos, procesamiento del lenguaje natural, Ontologías, Bases De Datos,  Machine Learning, Seguimiento de trayectorias y Modelamiento matemático de formaciones.

Estas son algunas de mis publicaciones académicas mas recientes: