在Android中查询firebase数据

时间:2017-06-30 09:59:27

标签: android firebase

我想查询来自firebase的数据。 但我遇到了一些问题。 这是我的火力基础数据 click me show the picture

Firebase myFirebaseRef = new Firebase("http//.....");
Query queryRef= myFirebaseRef.child("0912345678").orderByChild("coffeeNo").equalTo("002");

     queryRef.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot snapshot) {
                    // do some stuff once

                    if (snapshot.getValue() == null) {
                        txtMyCoffee.setText("No data");
                    }
                    else{
                            for (DataSnapshot dataSnapshot : snapshot.getChildren())
                            {
                                Coffee userCoffee = dataSnapshot.getValue(Coffee.class);
                                date = userCoffee.getDate();
                                txtMyCoffee.setText(date+" Success!");
                            }
                        }
                }  @Override
                public void onCancelled(FirebaseError firebaseError) {
                }
            });

但是当我运行此代码时,txtMyCoffee的文本将显示我"没有数据"。 如何解决这个问题? 谢谢大家!

2 个答案:

答案 0 :(得分:0)

您正在使用的查询类型将要求您对子项进行迭代(可以返回多个结果)....所以只需在onDataChanged中包含以下内容

                    for (DataSnapshot dataSnapshot : snapshot.getChildren())
                    {
                        Coffee userCoffee = dataSnapshot.getValue(Coffee.class);
                        date = userCoffee.getDate();
                        txtMyCoffee.setText(date+" Success!");
                    }

答案 1 :(得分:0)

请使用此代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference coffeeNoRef = rootRef.child("myCoffee").child("0912345678").child("20170627");
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String coffeeNo = dataSnapshot.child("coffeeNo").getValue(String.class);
        Log.d("TAG", coffeeNo);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
coffeeNoRef.addListenerForSingleValueEvent(eventListener);

出局将是:

003

肯定会工作。