recuperar realtime query guardar example datos datasnapshot consultas android firebase firebase-database boolean

realtime - Android-Devuelve el valor booleano relativo de Firebase



query firebase android (1)

public boolean checkGold(final int gold){ mRef.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { String value = dataSnapshot.getValue(String.class); goldparse = Integer.parseInt(value); if (gold > goldparse){ /*Return*/ } } @Override public void onCancelled(FirebaseError firebaseError) { } }); return false; }

Tengo un método para verificar el oro en el exterior, pero cómo devolver el método falso en onDataChange . Gracias.


La base de datos de Firebase es asincrónica, y su flujo está fuera del flujo normal que solemos hacer. En este post , traté de explicar eso (solo para información)

Y en este caso, haces algo así, ¿verdad?

boolean iWantValue = checkGold(10); if (iWantValue) { // do someting } else { // do something else } ... public boolean checkGold(final int gold) { ... // content here are still the same as mentioned in question }

Pero si sabemos que es asincrono, debería ser así:

int currentGold = 0; // place gold here so it can be accessed anywhere ... // wherever you want to check gold, type this currentGold = 10; // update this value first, right? checkGold(); ... public void checkGold() { mRef.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { String value = dataSnapshot.getValue(String.class); goldparse = Integer.parseInt(value); if (currentGold > goldparse){ // do something } else { // do something here } } ... }); }

O si eres como yo que quiere algo ordenado:

public void checkGold() { mRef.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { doSomethingOrNot(Integer.parseInt(dataSnapshot.getValue(String.class))); } ... }); } private void doSomethingOrNot(int goldparse) { if (currentGold > goldparse){ // do something } else { // do something here } }

Se necesita tiempo para estar familiarizado con esto, pero vale la pena. Espero que esto ayude