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,但是什麼時候被監聽器調用? –