我正在尝试从Firebase检索数据。 Info中的名称
这是我的firebase树。
我已经完成了这个
Firebase ref = new Firebase("https://link.firebaseio.com/Users/xxxxxxxx/Categories/drinks/");
然后我创建了我的听众
ref.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Log.e("TOTAL ITEM " ,""+ dataSnapshot.getChildrenCount());
for (DataSnapshot eventSnapshot : dataSnapshot.getChildren()) {
//Item_Get_List newPost = eventSnapshot.child("Info").getValue(Item_Get_List.class);
System.out.println("GetChildren: "+eventSnapshot.child("Info"));
System.out.println("details: "+eventSnapshot.child("Info").getValue());
}
我在控制台中得到了这个:
E/TOTAL ITEM: 2
I/System.out: GetChildren: DataSnapshot { key = Info, value = null }
I/System.out: details: null
I/System.out: GetChildren: DataSnapshot { key = Info, value = null }
I/System.out: details: null
E/TOTAL ITEM: 2
I/System.out: GetChildren: DataSnapshot { key = Info, value = null }
I/System.out: details: null
I/System.out: GetChildren: DataSnapshot { key = Info, value = null }
I/System.out: details: null
E/TOTAL ITEM: 1
I/System.out: GetChildren: DataSnapshot { key = Info, value = {name=Pierre} }
I/System.out: details: {name=Pierre}
但如果我想做
Item_Get_List newPost = eventSnapshot.child("Info").getValue(Item_Get_List.class);
System.out.println("Name: "+newPost.getName());
我有这个错误
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.app.pierre.myapp.Item_Get_List.getName()' on a null object reference
我的Item_Get_list类如下:
public class Item_Get_List {
private String name;
public Item_Get_List(){
}
public Item_Get_List(String name){
this.name = name;
}
public String getName(){
return name;
}
}
我做错了什么?
提前致谢
更新 我通过
找到了一个临时解决方案if(eventSnapshot.child("Info").getValue() != null){
System.out.println("Name: "+newPost.getName());
}
但这只是暂时的,因为我知道我在这里做错了。 =(
答案 0 :(得分:0)
由于您的数据树包含子中的子项,因此您需要执行两个for循环才能进入更深层。
//更改此
for (DataSnapshot eventSnapshot : dataSnapshot.getChildren()) { //Item_Get_List newPost = eventSnapshot.child("Info").getValue(Item_Get_List.class); System.out.println("GetChildren: "+eventSnapshot.child("Info")); System.out.println("details: "+eventSnapshot.child("Info").getValue());
}
//到此
for (DataSnapshot eventSnapshot : dataSnapshot.getChildren()) { //
for (DataSnapshot childEventSnapshot : eventSnapshot.getChildren()) {
Item_Get_List newPost = childEventSnapshot.child("name").getValue(Item_Get_List.class);
System.out.println("GetChildren: "+childEventSnapshot.child("name")); System.out.println("details: "+childEventSnapshot.child("name").getValue());
}
}
如果这对您有任何改变,请告诉我。希望这会让你得到你想要的。如果某些事情仍然不对,请做出评论。
编辑:我认为对象null错误是由此
引起的Item_Get_List newPost = childEventSnapshot.child("name").getValue(Item_Get_List.class);
删除.child(“名称”)并将其设为
Item_Get_List newPost = childEventSnapshot.getValue(Item_Get_List.class);