为什么Firebase无法获取数据?

问题描述 投票:-2回答:1

Firebase只是默默无法获取数据。我花了很多时间研究它,但仍然不明白什么是问题。可能这是一个非常简单的错误,所以请找我的借口

fRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            ids = dataSnapshot.child("dictionary").child("fruitIds").getValue(DictionaryIDs.class);

        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

DictionaryIds.class代码

package com.example.asuper.mluvitslova;

import com.google.firebase.database.FirebaseDatabase;

import java.util.ArrayList;

public class DictionaryIDs {

    private ArrayList<String> fruitIds = new ArrayList<>();

    public DictionaryIDs() {

    }

    public DictionaryIDs(ArrayList<String> fruitIds) {
        this.fruitIds = fruitIds;
    }


    public void addFruitId(String id){
        fruitIds.add(id);
    }

    public ArrayList<String> getFruitIds(){
        return fruitIds;
    }

    public void setFruitIds(ArrayList<String> fruitIds){
        this.fruitIds = fruitIds;
    }

}

而在日志中只是没有

这段代码必须得到我的DictionaryIds.class文件,但事实上Firebase只是让我得到null对象。

Firebase database structure

java android database firebase-realtime-database
1个回答
0
投票

在最后一个fruitIds孩子下,没有DictionaryIDs对象,有简单的字符串。要获得所有这些ID,您需要使用DataSnapshot方法遍历getChildren()对象,如下所示:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference fruitRef = rootRef.child("dictionary").child("fruitIds").child("fruitIds");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String id = ds.getValue(String.class);
            Log.d(TAG, id);
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage());
    }
};
fruitRef.addListenerForSingleValueEvent(valueEventListener);

logcat中的结果将是所有这些ID。

© www.soinside.com 2019 - 2024. All rights reserved.