public class DataService {
private static DataService ourInstance = new DataService();
private DatabaseReference mDatabase;
public static DataService getInstance() {
return ourInstance;
}
public ArrayList<UserDatabase> getFriendList() {
mDatabase = FirebaseDatabase.getInstance().getReference().child("users");
final ArrayList<UserDatabase> list = new ArrayList<>();
mDatabase.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
UserDatabase userDatabase = dataSnapshot.getValue(UserDatabase.class);
list.add(userDatabase);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {}
@Override
public void onCancelled(DatabaseError databaseError) {}
});
return list;
}
}
我试图从users
节点获取我的用户数据库。这真的很奇怪。当我在onChildAdded
函数中设置断点时,它将检索所有用户并将其添加到列表中。ArrayList不在内部更新onChildAdded函数
但是,如果我没有设置断点,它没有得到任何东西,列表大小为0.有没有人知道发生了什么?提前致谢!
但随后它可能再被称为和覆盖。你不能将'list'移动到一个字段吗? –
我不认为它被覆盖。当我在所有进程之后的返回列表中设置一个断点时,它将返回正确的数据。但如果不是的话,它甚至不会去onChildAdded函数 –
我并不真正熟悉android/firebase,但是什么时候被监听器调用? –