【问题标题】:How to load children from Firebase如何从 Firebase 加载孩子
【发布时间】:2020-09-09 03:46:38
【问题描述】:

我有一些代码可以存储特定操作系统在 Firebase 上的投票次数。我使用以下内容来存储它:

DatabaseReference windowsChoice;

在 onCreate 方法内部:

 FirebaseDatabase.getInstance().getReference("Windows");

在按钮方法中,我将数据存储到 firebase:

String id = "TimesClicked";
windowsChoice.child(id).setValue(b); //b holds the amount of times that Windows has been clicked

生成的格式是这样的:

{"Windows":{"TimesClicked":8},"choice1Num":23} // ignore choice1Num

以下代码将为我获取 Windows (TimesClicked:8) 的值:

String result = new Connector().execute().get();
JSONObject ob = new JSONObject(result);
String jsonString = ob.getString("Windows");

String id = "TimesClicked";
windowsChoice.child(id).setValue(b); 

intent.putExtra("result", jsonString);
startActivity(intent);

但是我怎样才能得到 TimesClicked 标签的值呢?

【问题讨论】:

    标签: java android json firebase firebase-realtime-database


    【解决方案1】:

    但是如何获取 TimesClicked 标签的值呢?

    只需使用以下代码行:

    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    DatabaseReference timesClickedRef = rootRef.child("Windows").child("TimesClicked");
    ValueEventListener valueEventListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            long timesClicked = dataSnapshot.getValue(Long.class);
            Log.d("TAG", "timesClicked: " + timesClicked);
        }
    
        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
            Log.d("TAG", databaseError.getMessage()); //Don't ignore errors!
        }
    };
    timesClickedRef.addListenerForSingleValueEvent(valueEventListener);
    

    logcat 中的结果将是:

    timesClicked: 8
    

    【讨论】:

    • 如果在方法内声明了 OnDataChange 之外的 timesClicked,我如何访问它?
    • 你只能在那里使用它,或者你可以将它传递给另一个方法。这是因为 Firebase API 是异步的。有一个解决方法,您可以使用custom callback
    • 嘿,本!如果您认为我的回答对未来的 Firebase 开发者也有帮助,也请考虑投上一票(▲)。我真的很感激。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    • 1970-01-01
    • 2010-11-25
    相关资源
    最近更新 更多