来自Firebase的儿童列表与android

时间:2016-09-11 08:53:45

标签: android firebase firebase-realtime-database

我试图获取我的firebase树的值

enter image description here

我上了一堂课get_categories

public class get_categories {
    private String Name;

    public get_categories(){

    }

    public String getName(){
        return Name;
    }
}

然后我宣布了火焰基地

mRef = new Firebase("https://...../Users/Categories");

尝试使用OnChildEventListener

检索我的数据
mRef.addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {

                Log.e("Count " ,""+dataSnapshot.getChildrenCount());
                //Log.e("VALUES " ,""+dataSnapshot.child("Details").getValue());
                get_categories getCatName = dataSnapshot.child("Details").getValue(get_categories.class);
                Log.e("NAME " ,""+getCatName.getName());
            }

            @Override
            public void onChildChanged(DataSnapshot dataSnapshot, String s) {

            }

            @Override
            public void onChildRemoved(DataSnapshot dataSnapshot) {

            }

            @Override
            public void onChildMoved(DataSnapshot dataSnapshot, String s) {

            }

            @Override
            public void onCancelled(FirebaseError firebaseError) {

            }
        });

但我收到了错误

  

引起:com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:无法识别的字段"名称" (类com.app.pierre.myapp.get_categories),未标记为可忽略(0已知属性:])[来源:java.io.StringReader@9d0f705; line:1,column:10](通过引用链:com.app.pierre.myapp.get_categories [" Name"])

我做错了什么?

我用这个案例作为参考: https://www.firebase.com/docs/android/guide/retrieving-data.html

2 个答案:

答案 0 :(得分:1)

首先像这样更改你的模型,

2 6
3 4   < y_min for x = 3
3 5   <
3 10  <
3 12  < y_max for x = 3
3 25
5 1 
5 5   < y_min and y_max for x = 5
5 15  
6 6   < y_min and y_max for x = 6
6 20
8 0

使用Model类构造函数推送数据..

public class GetCategories {
    private String Name;

    public GetCategories(){

    }

    public GetCategories(String name){
    this.Name = name;

    }

    public String getName(){
        return Name;
    }
}

现在你可以这样做..

GetCategories model = new GetCategories("yourValues");

mReference.child("Details").push().setValue(model);

答案 1 :(得分:1)

JSON上的属性名称以大写字母开头。但是根据JavaBean属性的规则,getName()对应于名为name的属性(带有小写的n)。所以两者不匹配。

实现这一目标的一种方法是不使用setter,而是使用公共字段:

public class get_categories {
    public String Name;
}

通过这种方式,您可以绕过JavaBean逻辑并获得直接映射。