繁体   English   中英

在 documentSnapShot 中获取值,但将其转换为对象时,对象返回 null,为什么?

[英]getting value in documentSnapShot but when converting it toobject the object return null,why?

我在我的应用中使用 Firestore。 当我从该数据库中获取数据时,我将数据放入documentSnapShot对象中,但是当我将documentSnapShot转换为自定义对象时,它会被初始化,但其中不包含任何数据。

我的 Firebase Firestore 数据库:

1

我的 POJO 类:类 FirebaseData

public class FirebaseData {

    private List<Group> group = null;

    /**
     * No args constructor for use in serialization
     * 
     */
    public FirebaseData() {
    }

    /**
     * 
     * @param group
     */
    public FirebaseData(List<Group> group) {
        super();
        this.group = group;
    }

    public List<Group> getGroup() {
        return group;
    }

    public void setGroup(List<Group> group) {
        this.group = group;
    }

}

班组

public class Group {

    private String name;
    private List<Sticker> stickers = null;
    private Integer id;

    /**
     * No args constructor for use in serialization
     * 
     */
    public Group() {
    }

    /**
     * 
     * @param name
     * @param stickers
     * @param id
     */
    public Group(String name, List<Sticker> stickers, Integer id) {
        super();
        this.name = name;
        this.stickers = stickers;
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<Sticker> getStickers() {
        return stickers;
    }

    public void setStickers(List<Sticker> stickers) {
        this.stickers = stickers;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

}


班级贴纸

public class Sticker {

    private String name;
    private String id;

    /**
     * No args constructor for use in serialization
     * 
     */
    public Sticker() {
    }

    /**
     * 
     * @param name
     * @param id
     */
    public Sticker(String name, String id) {
        super();
        this.name = name;
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

}


主活动类:

db.collection("PackGroups").document("1").get()
                    .addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
                @Override
                public void onSuccess(DocumentSnapshot documentSnapshot) {
                    Log.d("TAG : firebase" ,"onSuccess: "+documentSnapshot.getData());
                    FirebaseData firebaseData = documentSnapshot.toObject(FirebaseData.class );
                    recyclerView.setAdapter(new AdapterGroupPack(MainActivity.this, firebaseData.getGroup()));
                    recyclerView.getAdapter().notifyDataSetChanged();

                }
            });

您的代码中的问题是List<Group> group在您的FirebaseData类中以小写开头,而在您的数据库中以大写(组)开头。 为了使其工作,两个名称必须匹配。 要解决此问题,您可以将数据库中该数组的名称更改为以小写开头,或者在 getter 之前添加以下注释:

@PropertyName("Group")
public List<Group> getGroup() {
    return group;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM