在没有父密钥的情况下从fire base检索数据到文本视图

时间:2018-05-12 06:50:46

标签: java android firebase firebase-realtime-database

This is firebase database details

我想在不使用父键的情况下使用子搜索详细信息。根据这个数据库,我想使用Name而不使用父键(“kjhsfkgkrlhg”)获得价格和类别,(“获取价格,类别名称=”超级Creamcracker“)

2 个答案:

答案 0 :(得分:0)

首先,首先进行数据库引用

DatabaseReference itemRef = FirebaseDatabase.getInstance().getReference("Items");

然后,

String itemName = "super Creamcracker"; 

Query query = itemRef.orderByChild("Name").startAt(itemName).endAt(itemName+ "\uf8ff");

    query.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            for (DataSnapshot data : dataSnapshot.getChildren()) {
                //if you dont have class for item
                String price = data.child("Price").getValue().toString();
                String category = data.child("Category").getValue().toString();


                //if you have class, lets say Item.java
                Item item = data.getValue(Item.class);

            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

答案 1 :(得分:0)

要解决此问题,请使用以下代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference itemsRef = rootRef.child("Items");
Query query = itemsRef.orderByChild("Name").equalsTo("super Creamcracker");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String category = ds.child("Category").getValue(String.class);
            long price = ds.child("Price").getValue(Long.class);
            Log.d("TAG", category + " / " + price);
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
query.addListenerForSingleValueEvent(valueEventListener);

因此ds包含结果列表。即使只有一个结果,ds也会包含一个结果的列表。所以输出将是:

200g / 200