Android - 返回相对于Firebase的布尔值 [英] Android - Return boolean value relative Firebase

查看:152
本文介绍了Android - 返回相对于Firebase的布尔值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  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); $ b $ if(gold> goldparse){
/ *返回* /
}
}
@Override
public void onCancelled(FirebaseError firebaseError){


});
返回false;
}

我有方法在外面检查金子,但是如何在方法 onDataChange 。感谢。

解决方案

Firebase数据库是异步的,它的流量超出了我们通常的正常流量。 在这篇文章中,我试图解释(仅供参考)



在这种情况下,你可以这样做,对吧?

$ p $ bo $ iWantValue = checkGold
if(iWantValue){
// do someting
} else {
//做别的事
}
...
public boolean checkGold(final int gold){
... //这里的内容仍然和前面提到的一样
}

但是如果我们知道它是异步的,它应该是这样的:

$ $ $ $ $ $ $ currentGold = 0; //在这里放置黄金,以便随时随地访问
...
//无论您想要检查黄金,请输入
currentGold = 10; / /更新这个值,对吗?
checkGold();
...
public void checkGold(){
mRef.addListenerForSingleValueEvent(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot){
String value = dataSnapshot.getValue(String.class);
goldparse = Integer.parseInt(value); $ b $ if(currentGold> goldparse){
//做某事
} else {
//在这里做某事
}
}
...
});

$ / code>

或者如果你喜欢我想要的东西整洁:

  public void checkGold(){
mRef.addListenerForSingleValueEvent(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot){
doSomethingOrNot(Integer.parseInt(dataSnapshot.getValue(String.class)));
}
...
});

$ b $ private void doSomethingOrNot(int goldparse){
if(currentGold> goldparse){
// do something
} else {
//在这里做点什么


code $
$ b $ p $需要时间熟悉这一点,但这是值得的。希望这有助于

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;
}

I have method to check gold in outside but how to return false in method onDataChange. Thanks.

解决方案

Firebase Database is asyncronous, and its flow is outside the regular flow that we usually do. In this post, I tried to explain that (just for information)

And in this case, you do something like this, right?

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
}

But if we know it is asyncronous, it should be like this:

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
            }
        }
        ...
    });
}

Or if you are like me who want something tidy:

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
    }
}

It needs time to be familiar with this, but it's worth it. Hope this helps

这篇关于Android - 返回相对于Firebase的布尔值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆