如何在firebase android中获取子密钥的值?
我在firebase中有以下数据库结构。我正在尝试获取onBindViewHolder中的键值“Std IX”,并将其设置在如何在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中显示该级别下的直接子节点。因此,从屏幕截
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;