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