Java 为什么Firebase不获取数据?

Java 为什么Firebase不获取数据?,java,android,database,firebase-realtime-database,Java,Android,Database,Firebase Realtime Database,Firebase只是默默地不获取数据。 我花了很多时间研究它,但仍然不太明白什么是问题。 也许这是个很简单的错误,所以请听我的解释 fRef.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { ids = dataSnapshot.child("dic

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;
    }

}
package com.example.asuper.mluvitslova;
导入com.google.firebase.database.FirebaseDatabase;
导入java.util.ArrayList;
公共类字典{
private ArrayList fructids=new ArrayList();
公共词典ids(){
}
公共字典ID(ArrayList子类){
this.fruitIds=果类;
}
public void addFruitId(字符串id){
添加(id);
}
公共ArrayList getfructids(){
返回子实体;
}
public void setfurtoids(ArrayList furtoids){
this.fruitIds=果类;
}
}
在日志中什么都没有

此代码必须只获取DictionaryIds.class文件,但实际上Firebase只获取null对象


在最后一个
子对象下,没有
字典ID
对象,只有简单的字符串。要获取所有这些ID,需要使用
getChildren()
方法循环通过
DataSnapshot
对象,如下所示:

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);

日志猫中的结果将是所有这些ID。

您是否确实为该子项设置了任何内容?
furtoids
的子项是另一个
furtoids
。如果执行
dataSnapshot.child(“dictionary”).child(“frutids”).child(“frutids”).getValue(DictionaryIDs.class),会发生什么情况?@流浪者什么都没有。它仍然不起作用。并获取
com.google.firebase.database.DatabaseException:无法将java.util.ArrayList类型的对象转换为com.example.asuper.mluvitslova.DictionaryIDs类型