Android — Firebase Realtime Database (2)

Armando Picón
devStories
Published in
3 min readJun 25, 2016

En mi publicación anterior les mostré como efectuar la integración de una sencilla aplicación Android con Firebase y cómo setear un valor único.

Ahora vamos a ver cómo setear múltiples valores. Para ello vamos a crear un nuevo Activity similar al anterior. Les comparto la estructura y un screenshot del layout.

Y acá les comparto el código del Activity.

El resultado de este Activity lo podemos ver en la siguiente imagen, como podrán apreciar, a diferencia del ejemplo anterior en el que seteabamos un único valor para la llave “message”, se está generando un elemento hijo bajo la llave “fruit”:

Como podrán observar cada elemento que vayamos agregando será precedido por un ID autogenerado que facilitará el ordenamiento y también evitará la colisión de datos. Si desean saber un poco más sobre estos pueden leer este artículo (lo encontrarán también entre las referencias al final de este artículo).

Otra diferencia la encontrarán a nivel del código del Activity, en lugar de implementar la interface ValueEventListener, esta vez implementamos la interfaz ChildEventListener. Esta interfaz nos permitirá recibir los eventos que se generen a raíz de los cambios bajo una referencia dada, en este caso fruitReference. Dentro de la implementación podremos apreciar que hay funciones o métodos para cada tipo de evento, por el momento solo he implementado aquel que corresponde a la adición de hijos.

final DatabaseReference fruitReference = database.getReference().child(FRUIT_CHILD);

fruitReference.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Log.d(TAG, "Fruta añadida:" + dataSnapshot.getValue().toString());
frutas += (dataSnapshot.getValue().toString() + "\n");
textView4.setText(frutas);

}

@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {

}

@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {

}

@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {

}

@Override
public void onCancelled(DatabaseError databaseError) {
Log.w(TAG, "Failed to read value.", databaseError.toException());
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String fruta = editText2.getText().toString();
Log.d(TAG, "La fruta recibida fue: " + fruta);
fruitReference.push().setValue(fruta);
editText2.setText("");
}
});

La implementación de la función OnClick es la que contiene la implementación para agregar un nuevo elemento a nuestra referencia a través de la invocación de la función push(). Esta función internamente obtiene una nueva referencia bajo nuestro fruitReference y por medio de la función setValue le establece un elemento compuesto por la key autogenerada y el valor que estamos ingresando.

Hasta aquí hemos llegado con este artículo, no olviden ver el código completo en mi repositorio.

Referencias:

--

--

Armando Picón
devStories

lifelong learner • 👨🏽‍💻 Android eng (ex: @uber ) • 🇵🇪 @ 🇨🇱 • @gdgopen • content creator @devpicon | @primosauda