从Firebase数据库中获取子代数,并将其放在一个数组列表中。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Firebase数据库中获取子代数,并将其放在一个数组列表中。相关的知识,希望对你有一定的参考价值。
我试图获取 "msanID "的计数,但它总是将数字返回为 "0"。我正在使用一个单独的类(ManageNodeName)来记录数据,并在列表视图中检索回来。我怀疑错误出在获取字符串msan_NAMESP的方法上.任何线索可能都会有帮助。谢谢!
databaseNodes = FirebaseDatabase.getInstance().getReference("MSAN List");
@Override
protected void onStart()
super.onStart();
databaseNodes.addValueEventListener(new ValueEventListener()
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot)
manageNodeList.clear();
for(DataSnapshot nodesnapshot: dataSnapshot.getChildren())
progressDialog.dismiss();
ManageNodeName manageNodeName = nodesnapshot.getValue(ManageNodeName.class);
manageNodeList.add(manageNodeName);
MSAN_NAMESP = manageNodeName.getNodeID();
ManageNodeList adapter = new ManageNodeList(ManageSelectMSAN.this, manageNodeList);
manageListViewMSANs.setAdapter(adapter);
@Override
public void onCancelled(@NonNull DatabaseError databaseError)
);
query = FirebaseDatabase.getInstance().getReference("MSAN MTCE")
.orderByChild("msanID")
.equalTo(MSAN_NAMESP);
query.addValueEventListener(new ValueEventListener()
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot)
int size = (int) dataSnapshot.getChildrenCount();
ManageNodeName.setCount(size);
@Override
public void onCancelled(@NonNull DatabaseError databaseError)
);
答案
数据从Firebase(和大多数云API)异步加载。当数据被加载时,你的主代码继续运行,这样用户就可以继续使用应用程序。然后当数据可用时,你的 onDataChange
是用该数据调用的。
这意味着,所有需要数据的代码,都需要被称为 里面 onDataChange
或从那里被召唤。
所以。
databaseNodes.addValueEventListener(new ValueEventListener()
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot)
manageNodeList.clear();
for(DataSnapshot nodesnapshot: dataSnapshot.getChildren())
progressDialog.dismiss();
ManageNodeName manageNodeName = nodesnapshot.getValue(ManageNodeName.class);
manageNodeList.add(manageNodeName);
MSAN_NAMESP = manageNodeName.getNodeID();
query = FirebaseDatabase.getInstance().getReference("MSAN MTCE")
.orderByChild("msanID")
.equalTo(MSAN_NAMESP);
query.addValueEventListener(new ValueEventListener()
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot)
int size = (int) dataSnapshot.getChildrenCount();
ManageNodeName.setCount(size);
@Override
public void onCancelled(@NonNull DatabaseError databaseError)
throw databaseError.toException(); // never ignore errors
);
ManageNodeList adapter = new ManageNodeList(ManageSelectMSAN.this, manageNodeList);
manageListViewMSANs.setAdapter(adapter);
@Override
public void onCancelled(@NonNull DatabaseError databaseError)
throw databaseError.toException(); // never ignore errors
);
也请看: getContactsFromFirebase()方法会返回一个空列表 更长的例子,以及其他方法。
以上是关于从Firebase数据库中获取子代数,并将其放在一个数组列表中。的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Firebase Firestore 获取数据并将其存储在列表中以在颤振小部件中使用?