很难解释的种类。基本上,我有一个名为数据的列表,我需要添加到该列表。这是我用来做到这一点的代码...更新嵌套方法中的变量不会全局更新
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 –