0
我的代码将逐行处理,而不会等待从数据库加载的值, 我的意思是,如果它在步骤1处于当前状态并尝试从数据库获取数据,则它将移动到另一个步骤2同时仍数据不完全地取 任何一个可以帮助我解决这个问题很快等待在处理之前加载数据
private List<ContactInfo> Go(final List<ContactInfo> result) {
myRef1 = FirebaseDatabase.getInstance().getReference().child("0532").child("TL");
myRef1.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
final long[] pendingLoadCount = { dataSnapshot.getChildrenCount() };
for (DataSnapshot itemSnapshot: dataSnapshot.getChildren()){
Log.v("ABCD", itemSnapshot.getValue().toString());
value = itemSnapshot.getValue().toString();
// String parts[] = value.split("#");
final ContactInfo ci = new ContactInfo();
ci.name = value;
Query myRef2 = FirebaseDatabase.getInstance().getReference().child("0532").child(DD).child(value);
myRef2.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Map<String ,Object> key = (Map<String, Object>) dataSnapshot.getValue();
if(dataSnapshot.hasChild("settime"))
{
// Log.v("ABCD", dataSnapshot.getValue().toString());
// Log.v("ABCD", key.values().toString());
ci_surname = (String) key.get("settime");
ci_email = (String) key.get("settime");
ci_title = (String) key.get("settime");
Log.v("ABCD", "Nothing found 2"+ci_surname);
ci.surname = ci_surname ;
ci.email = ci_email ;
ci.title = ci_title;
result.add(ci);
} else{
Log.v("ABCD", "Nothing found 2"+ci_surname);
ci.surname = "ABCD" ;
ci.email = "XYZ" ;
ci.title = "FFF";
result.add(ci);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
pendingLoadCount[0] = pendingLoadCount[0] - 1;
if (pendingLoadCount[0] == 0) {
Log.v("ABCD", "Nothing found");
recList.setAdapter(ca);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return result;
}
谢谢,但不工作 – sunny