【问题标题】:Retrieve data from a child node of a child node in firebase从firebase中子节点的子节点检索数据
【发布时间】:2017-06-28 17:32:09
【问题描述】:

我想在我的 Firebase 数据库中检索作为子节点的子节点的所有差事名称。

但是,我只能引用到第二个子节点(随机键) 这是我的代码;

  View view = inflater.inflate(R.layout.tab1,container,false);
    String r = "Errands";
    root = FirebaseDatabase.getInstance().getReference().child(r);
    list = (ListView) view.findViewById(R.id.mylistview);

    arrayAdapter = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,list_of_errands);

    list.setAdapter(arrayAdapter);

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


            Set<String> set = new HashSet<String>();
            Iterator i = dataSnapshot.getChildren().iterator();

            while (i.hasNext()) {
                set.add(((DataSnapshot) i.next()).getKey());
            }

请帮忙

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    请使用此代码:

    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    DatabaseReference errandsRef = rootRef.child("Errands");
    ValueEventListener eventListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for(DataSnapshot ds : dataSnapshot.getChildren()) {
                String key = ds.getKey();
    
                DatabaseReference keyRef = rootRef.child("Errands").child(key);
                ValueEventListener valueEventListener = new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        String Errand = ds.child("Errand").getValue(String.class);
                        Log.d("TAG", Errand);
                    }
    
                    @Override
                    public void onCancelled(DatabaseError databaseError) {}
                };
                keyRef.addListenerForSingleValueEvent(valueEventListener);
            }
        }
    
        @Override
        public void onCancelled(DatabaseError databaseError) {}
    };
    errandsRef.addListenerForSingleValueEvent(eventListener);
    

    你的输出将是:

    Go to Strath
    //and so on
    

    希望对你有帮助。

    【讨论】:

    • 不幸的是它没有显示任何东西。
    • 请看我更新的答案。我还添加了Log 声明。
    • 非常感谢亚历克斯。你之前的回答有效。我只需要将字符串差事附加到列表视图。
    • 一切都好吗?如果您仍然认为我的回答对您有所帮助,请考虑接受。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多