很難解釋的種類。基本上,我有一個名爲數據的列表,我需要添加到該列表。這是我用來做到這一點的代碼...更新嵌套方法中的變量不會全局更新
public static List<WorldBrowseData> getData() {
data = new ArrayList<>();
ref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot children : dataSnapshot.getChildren()) {
WorldBrowseData current = new WorldBrowseData();
Log.v("CHILDREN",children.toString());
current.image = children.child("image_url").getValue().toString();
//Log.v("IMAGE",current.image);
data.add(current);
Log.v("DATA IN METHOD",data.toString());
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
Log.v("DATA IS",data.toString());
return data;
}
當我記錄「數據在方法」,它返回更新,正確的列表。但是當我登錄(並返回)「數據是」時,它只是一個空列表。
另外,它在記錄「DATA IN METHOD」之前記錄「DATA IS」,所以基本上它被調用,返回數據,然後然後更新數據,當我需要更新然後返回時。
我在做什麼錯?
不同的Firebase客戶端平臺,同樣的問題:http://stackoverflow.com/questions/27049342/asynchronous-access-to-an-array-in-firebase/27050749#27050749 –