Firebase Android基于密钥获取子项的值

时间:2017-01-04 04:15:58

标签: android firebase firebase-realtime-database

我在Firebase中有以下数据库结构:

image

我想检索键的名称" name" (在这种情况下将是" b")。我知道关键-K_bWdgeYxYrdmzr67bJ。这不需要有一个监听器。我该怎么做?

非常感谢

4 个答案:

答案 0 :(得分:10)

这将100%适合您。

ref.child("-K_bWdgeYxYrdmzr67bJ").child("name").addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot snapshot) {
        try {
            if (snapshot.getValue() != null) {
                try {
                    Log.e("TAG", "" + snapshot.getValue()); // your name values you will get here
                } catch (Exception e) {
                    e.printStackTrace();
                }
            } else {
                Log.e("TAG", " it's null.");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onCancelled(FirebaseError firebaseError) {
        Log.e("onCancelled", " cancelled");
    }
});

答案 1 :(得分:1)

你必须将监听器添加到-K_bWdgeYxYrdmzr67bJ的超级并从中获取Iterable。它会给你Iterable,然后你就可以获得你的价值。

Iterable<DataSnapshot> dsChildData = ds.getChildren();

这有助于您在-K_bWdgeYxYrdmzr67bJ的超级中获取所有对象。

要访问纬度和经度,您可以使用此

for(Datasnapshot dsChild : dsChildData){
    MyModel mm = dsChild.getValue(MyModel.class);
}

您必须使用arrayList或List来存储模型类的所有节点。

答案 2 :(得分:0)

 if (dataSnapshot.exists()) {
            HashMap<String, Object> hashmap = new HashMap<>();
                Iterator<DataSnapshot> friendsiterator = dataSnapshot.getChildren().iterator();
                while (friendsiterator.hasNext()) {

                    DataSnapshot bdaySnapShaot = friendsiterator.next();

                    if (bdaySnapShaot.getKey().equals("latitude")) {
                            hashmap.put("latitude", bdaySnapShaot.getValue().toString());
                        } else if (bdaySnapShaot.getKey().equals("longitutde")) {
                            hashmap.put("longitutde", bdaySnapShaot.getValue().toString());
                        } else if (bdaySnapShaot.getKey().equals("name")) {
                            hashmap.put("name", bdaySnapShaot.getValue().toString());
                        }


                }


            }

答案 3 :(得分:0)

mDatabaseReport.getRef().addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    for (DataSnapshot postSnapshot :dataSnapshot.getChildren()) {

                   TextView Push_Key = (TextView)findViewById(R.id.txt_points);
                    Push_Key.setText("" + postSnapshot.getKey());
                    }
                }
                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });