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仅为我提供了空对象。
答案 0 :(得分: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。