从子列表 Firebase 与android

标签: Android
发布时间: 2016/10/10 21:11:54
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我想要的值我 firebase

enter image description here

我得到了类 get_categories

public class get_categories {
    private String Name;

    public get_categories(){

    }

    public String getName(){
        return Name;
    }
}

然后我声明firebase

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; 线︰ 1,列︰ 10] (通过引用链︰ com.app.pierre.myapp.get_categories["Name"])

我到底做错了?

我使用了这种情况下作为参考︰ https://www.firebase.com/docs/android/guide/retrieving-data.html

解决方法 1:

嗯,首先改变你的模式,像这样,

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

而且现在你可以喜欢这种方式。

mRef.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {

            for (DataSnapshot eventSnapshot : dataSnapshot.getChildren()) {

                GetCategories newPost = eventSnapshot.getValue(GetCategories.class);

                Log.e("NAME " ,""+ newPost.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) {

        }
    });
赞助商