在关系数据库中,我在每个表中使用uid
列作为主键。在Android代码中,我使用以下类格式:
class A {
String uid;
// Other fields
}
我已切换到Firebase DB。我在将数据保存到数据库时避免使用数组,所以一切都是键值格式,关键是通过调用push()
创建的推送ID。由于Firebase生成了一个密钥,我本能地假设它是我的uid
字段的对应部分,并从类中删除uid
。数据库记录如下:
"-KonAikaef0Q0crP0AgK": {
// All fields of class A except 'uid' in key-value format
}
没有uid
的课程如下:
class B {
// All fields of class A except 'uid'
}
当我尝试从Firebase数据库中检索数据时,我获得了键值对的DataSnapshot,所有值都是B类的实例。在某些情况下,我尝试像之前那样编写代码,例如,我创建了一个List<B>
,使用结果DataSnapshot中的值填充它,并将此列表提供给要在ListView中显示的ArrayAdapter<B>
。现在,所有密钥都丢失了,这是至关重要的。
我如何克服我面临的问题?
uid
看到here吗?uid
字段并将密钥映射到此字段吗?答案 0 :(得分:1)
您应该创建一个List<B>
,而不是创建Map<String,B>
,而地图中的键是数据库中的键。这样你就可以循环遍历条目,或仅仅是键,或仅仅是值。
如果您只是想要这些值,则可以通过map.values()
获取它们。