为了解决这个问题,是的,在SO上有一个类似的问题,但它并不能解释我的情况究竟是什么问题。
在Firebase实时数据库中,我有一个类似于这样的json树:
users{
userid{
templates{
templateName1{ // example name that the user saves their template as.
// each template is an ArrayList
//templateName1 ArrayList contents
}
templateName2{
//templateName1 ArrayList contents
}
templateName2{
//templateName1 ArrayList contents
}
}
}
}
我需要能够在“模板”中列出每个模板,而在其他时候只需获取特定模板的ArrayList值。但是我似乎无法弄清楚如何做这个简单的事情。
根据我在Google文档中搜索/阅读的内容,我的代码看起来应该是这样的:
DatabaseReference mTemplateRef = mDatabase.child("users").child(uid).child("templates");
mTemplateRef.addListenerForSingleValueEvent(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
dataSnapshot.getChildren();
// somehow get the values here
}
});
当我调试并输入表达式数据dataSnapshot.getChildren()时,我可以看到预期的内容,但我似乎无法将这些数据存入我的应用程序。有任何想法吗?
答案 0 :(得分:2)
这就是我想要的:
settingsRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()){
// easy
String value = dataSnapshot1.getValue(String.class);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
答案 1 :(得分:1)
建议您为模板创建一个类,其中包含getter,empty和参数化构造函数,如图所示
def closest_power(base, num):
bevaluate = True
exponent = 0
vale = 0
older = 0
olders = 0
while bevaluate:
vale = base ** exponent
if vale < num:
older = num - vale
exponent+=1
else:
olders = vale - num
if older == olders :
if num == 1:
exponent = 0
else:
exponent-=1
break
elif older < olders:
exponent-=1
break
bevaluate = False
return exponent
现在你可以轻松地做到这一点
public class Template {
String name;
ArrayList<String> list;
public Template() {
}
public Template(String name, ArrayList<String> list) {
this.name = name;
this.list = list;
}
public String getName() {
return name;
}
public ArrayList<String> getList() {
return list;
}
}
答案 2 :(得分:0)
类似这样的代码:
mTemplateRef.addListenerForSingleValueEvent(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// dataSnapshot itself a child of "templates"
DataSnapshot messageSnapshot= dataSnapshot;
DataType author = (DataType)messageSnapshot.child("array").getValue();
// somehow get the values here
}
});