![](/img/trans.png)
[英]How to get all items under certain conditions in DynamoDbAsyncTable
[英]Android Firebase: How to simply get all the values under a certain key?
为了解决问题,是的,在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值。 但是我似乎无法弄清楚如何做这个简单的事情。
从我在文档中搜索/阅读的内容来看,我的代码看起来应该是这样的:
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()时,我可以看到预期的内容,但我似乎无法将数据存入我的应用程序。 有任何想法吗?
这就是我要找的东西:
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) {
}
});
建议您使用getter,empty和参数化构造函数为模板创建一个类,如图所示
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;
}
}
现在你可以轻松地做到这一点
databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot data : dataSnapshot.getChildren()){
Template template = data.getValue(Template.class);
// use this object and store it into an ArrayList<Template> to use it further
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
像这样的代码:
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
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.