HashMap()
来完成的,所以,我想要的是能够将不同的卡号添加为不同的密钥,并且在这些卡号内部,不同的密钥作为不同的密钥而不覆盖它。
现在这就是我拥有的和我想要的。每张卡内的事件应该是不同的,比如ofert1,ofert2等等,卡号也是。如果我将相同的卡号添加到我用来传递数据的editText,它应该转到同一张卡,并能够在该卡内创建优惠。
问题是,如果我继续添加数据,旧数据会被新数据替换,我只想在同一张卡中添加不同的卡号以及不同的优惠。
我所做的就是这个
Map mOffers= new HashMap();
mOffers.put("codigo_oferta",mStringCodigoOferta);
Map mCardNumbers= new HashMap();
mCardNumbers.put(mStringTarjeta, mOffers);
mDatabase.child("Locales").child(uid).setValue(mCardNumbers);
我想要的是推送()与不同的键,但在每个卡号内推送不同的卡号和不同的优惠。
另外,如果我在引用中添加push()
,它会推送不同的卡,但是使用随机密钥,而我不想要它,我希望该卡是存储不同的不同密钥提供。
编辑3:现在它的工作就像弗兰克回答的那样,但不是继续添加优惠,而是让他们更换优惠。
答案 0 :(得分:2)
我认为您要求这样做:
Map mOffers= new HashMap();
mOffers.put("ofert1", true);
mOffers.put("ofert2", true);
Map mCardNumbers= new HashMap();
mCardNumbers.put("45672224", mOffers);
mDatabase.child("Locales").child(uid).setValue(mCardNumbers);
或更直接:
Map mOffers= new HashMap();
mOffers.put("ofert1", true);
mOffers.put("ofert2", true);
mDatabase.child("Locales").child(uid).child("45672224").setValue(mOffers);
如果您要在优惠中添加现有项目,可以在该特定路径上致电setValue
:
mDatabase.child("Locales").child(uid).child("45672224/ofert3").setValue(true);
如果要添加/更改/删除多个子节点,但不修改其他子节点,请使用用户updateChildren()
。例如,这会添加ofert3
并删除ofert2
:
Map mOffers= new HashMap();
mOffers.put("ofert3", true);
mOffers.put("ofert2", null);
mDatabase.child("Locales").child(uid).child("45672224").updateChildren(mOffers);
请注意,我要重复reading and writing data和working with lists of data上Firebase文档中解释的大部分内容,因此我建议您在这些页面上花一些时间。