【发布时间】:2018-09-20 07:16:10
【问题描述】:
我想将我的数据库子项存储在我的模型的数组列表中。
型号:
public class testInformation {
private String taskName;
private String answer;
public testInformation() {
}
public String getTaskName() {
return taskName;
}
public void setTaskName(String taskName) {
this.taskName = taskName;
}
public String getAnswer() {
return answer;
}
public void setAnswer(String answer) {
this.answer = answer;
}
}
在片段的onCreate()方法中,我调用了一个GetDataFromDatabase()方法,如下所示:
public void GetDataFromDatabase(){
mFirebaseDatabase= FirebaseDatabase.getInstance();
myref=mFirebaseDatabase.getReference().child("solutionKey");
myref.keepSynced(true);
myref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds:dataSnapshot.getChildren()){
testInformation testInformation=new testInformation();
testInformation.setTaskName(ds.getKey().toString());
testInformation.setAnswer(ds.getValue().toString());
results.add(testInformation);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
我有一个名为results 的公共ArrayList<testInformation> 变量,用于存储数据库中的数据,但即使在调用GetDataFromDatabase() 之后,results 列表似乎是空的,但是当我在OnDataChange() 方法处设置断点,它似乎被正确的数据填满了。
我的问题是,如何从OnDataChange() 中获取已填满的results 列表以使用它?
编辑:这个列表不会被修改或改变,所以我只需要得到它一次,这就是我使用addListenerForSingleValueEvent()方法的原因。
【问题讨论】:
-
很可能,您正在从 ArrayList 中读取数据,然后再填充数据。如果您将代码发布到您从列表中读取的位置,我可以尝试提供帮助。
-
您将结果用于什么目的?
-
这是一个 testInformation 对象列表,其中包含从 Firebase 数据库中提取的数据。
-
你在哪里使用列表?可能的问题是您希望在 GetDataFromDatabase 函数返回时填充结果列表,这不一定是真的。事件监听器被异步调用。如果您能发布更多代码,我可以提供帮助。
标签: android firebase arraylist firebase-realtime-database