java - 为什么 Firebase 无法获取数据?
问题描述
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 只是让我得到空对象。
解决方案
在最后一个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。
推荐阅读
- php - 如何短语/分解 XML 数据?
- flutter - 如何向 Material App Flutter 添加多个主题参数?
- windows - 从 WMIC 查询中排除一些输出
- python - How to "upgrade" hourglass pattern generator?
- flutter - 如何在午夜从 Flutter 更新 Cloud Firestore 中的值
- java - 如何在 Java 代码中解析和编辑 MS Visio 文件
- rust - Rust Playground 和本地机器中 reqwest 示例的错误
- unity3d - 在着色器中实现权重以生成程序地形
- javascript - 如何以编程方式计算网页传输的大小?Chrome 扩展程序
- c++ - 实现堆栈数据结构时出现编译器错误