java - 从另一个类调用方法时,firebase java admin sdk datasnapshot 循环不启动的奇怪错误
问题描述
我有一个类DataBase,它有一个名为“query”的方法,它基本上将节点“riferimento”的所有子节点放入一个arraylist
public ArrayList<ContenutoDAO> query(String riferimento)
{
ArrayList<ContenutoDAO> res=new ArrayList<>();
DatabaseReference ref = FirebaseDatabase.getInstance().getReference(riferimento);
ref.addListenerForSingleValueEvent(new ValueEventListener()
{
private ContenutoDAO temp=null;
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds:dataSnapshot.getChildren())
{
temp=new ContenutoDAO();
temp.setTipo(ds.child("tipo").getValue(String.class));
temp.setTitolo(ds.child("titolo").getValue(String.class));
temp.setValore(ds.child("valore").getValue(String.class));
res.add(temp);
System.out.println("prova-prova");
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return res;
}
当监听器被附加时,for 循环根本不会执行,直到我调用 temp.setTipo(...)、temp.setTitolo(...) 和 temp.setValore(...)。这些方法不会让for 循环已执行。如果我删除这些方法,for 循环可以工作,这是 ContenutoDAO 类:
public class ContenutoDAO {
private SimpleStringProperty tipo;
private SimpleStringProperty titolo;
private SimpleStringProperty valore;
public void setTipo(String tipo) {
this.tipo.set(tipo);
}
public void setTitolo(String titolo) {
this.titolo.set(titolo);
}
public void setValore(String valore) {
this.valore.set(valore);
}
public String getTipo() {
return tipo.get();
}
public String getTitolo() {
return titolo.get();
}
public String getValore() {
return valore.get();
}
public StringProperty tipoProperty() {
return tipo;
}
public StringProperty titoloProperty() {
return titolo;
}
public StringProperty valoreProperty() {
return valore;
}}
我尝试了很多解决方案,例如:
1.在 ContenutiDAO 类中使用字符串而不是 simplestringproperty
填充数据快照的数组列表并以另一种方法将其转换为 ContenutoDAO 的数组列表
3.将查询方法的代码放入类库的构造函数中(构造函数初始化firebaseapp)
4.创建 3 个字符串数组列表(节点的每个子节点一个:tipo、titolo 和值)然后用值填充它,然后使用这些数据填充 ContenutiDAO 的数组列表
这是数据库结构
-root
---音乐博物馆
-----chuck berry
-------contenuto0
------------valore: value
------------tipo : 价值
------------titolo: 价值
-------contenuto1
------------价值: 价值
---------- --tipo: 价值
------------titolo: 价值
我需要找回音乐博物馆/查克贝利的所有孩子。
对不起,我的英语不好,我知道这是一个奇怪的错误,谢谢你的关注。
解决方案
推荐阅读
- powershell - 在对 WSL 的 Powershell 调用中使用变量
- c# - SignalR GetHubContext 按名称
- json - 如何解析熊猫数据框中的 JSON 列并将新数据框连接到原始数据框?
- azure - Azure B2C 密码字段文本和占位符
- sql - 生成动态列值 SQL
- sql-server - 是否有可能是一个具有共同值但只有一列具有不同数据的表以使其像单行中的枢轴一样?
- git - 如何在 Media Temple Centos 上通过 ssh 连接到 git 远程?
- javascript - 如何使用 Tone.JS 激活淡出效果?
- python - Psycopg2 update 不更新表,也不会抛出任何错误
- android - 如何制作清单
可打包?