Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在firebase android中获取子密钥的值?_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

如何在firebase android中获取子密钥的值?

如何在firebase android中获取子密钥的值?,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我在firebase中有以下数据库结构。我正在尝试获取onBindViewHolder中的键值“Std IX”,并将其设置在class\u key中。我能够在post_key字段中使用下面的代码获取键值“science”,但无法在class_key中使用String class_key=getRef(position).child(post_key).getKey()获取其子键“Std IX” 由于您在主题列表上创建了一个适配器,适配器将尝试在JSON中显示该级别下的直接子节点。因此,从屏幕截

我在firebase中有以下数据库结构。我正在尝试获取onBindViewHolder中的键值“Std IX”,并将其设置在
class\u key
中。我能够在
post_key
字段中使用下面的代码获取键值“science”,但无法在
class_key
中使用
String class_key=getRef(position).child(post_key).getKey()获取其子键“Std IX”


由于您在主题列表上创建了一个适配器,适配器将尝试在JSON中显示该级别下的直接子节点。因此,从屏幕截图中,Firebase将尝试为
science
节点创建
Subject\u list\u GetSet
,将JSON中的属性直接映射到Java类中的属性

要匹配JSON结构,您需要在类中使用如下字段/属性:

@PropertyName("Std IX")
public String stdIX;

因为我希望这个密钥可以动态生成,所以这可能是不可能的。在这种情况下,在适配器中获取正确数据的唯一方法是使用自定义的
SnapshotParser
,如中所示。

主题列表\u GetSet
是什么样子?适配器显示的是什么引用/查询?
getRef
返回的数据位置是什么?尝试以成对格式制作模型,如在“主题”名称下以成对格式或列表格式获取数据,然后在UI部件中自定义。@FrankvanPuffelen请检查我编辑的问题。请注意这两个
字符串post_key=getRef(position).getKey()
字符串class_key=getRef(position).child(post_key).getKey()返回值为“科学”。嘿@digital_pro。你有什么收获吗?我在下面添加了一个答案,展示了如何控制数据库中Java代码和JSON之间的映射。这有意义吗?如果我的答案有用,请单击向上投票按钮(▲) 如果它回答了您的问题,请单击复选标记(✓) 接受它。这样别人就会知道你已经得到了(足够的)帮助。也请参见
public class Subject_list_GetSet {
    private String Subject_name,Recom_bk,bk1,bk2,bk3;


    public Subject_list_GetSet(){}

    public Subject_list_GetSet(String Subject_name,String bk1,String bk2,String bk3){
        this.Subject_name=Subject_name;
       
        this.bk1=bk1;
        this.bk2=bk2;
        this.bk3=bk3;
    }

    public String getSubject_name() {
        return Subject_name;
    }

    public void setSubject_name(String Subject_name) {
        this.Subject_name = Subject_name;
    }


    public String getBk1() {
        return bk1;
    }

    public void setBk1(String bk1) {
        this.bk1 = bk1;
    }

    public String getBk2() {
        return bk2;
    }

    public void setBk2(String bk2) {
        this.bk2 = bk2;
    }

    public String getBk3() {
        return bk3;
    }

    public void setBk3(String bk3) {
        this.bk3 = bk3;
    }

}
@PropertyName("Std IX")
public String stdIX;