首页 > 解决方案 > 从 Firestore 查询数据到 Arraylist 但一无所获?

问题描述

我在 ArrayList 中添加数据时遇到问题。我试图在数组列表中添加数据但一无所获

这是我的代码

public class fmMain extends Fragment {
     private ArrayList<markerList> posList = new ArrayList<markerList>();
public fmMain() {
    // Required empty public constructor
}

@Override
public View onCreateView(LayoutInflater inflater, final ViewGroup container,
                         Bundle savedInstanceState) {


    //Firebase get data
    stores.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
        @Override
        public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
            for (QueryDocumentSnapshot documentSnapshot: queryDocumentSnapshots){
                markerList m = new markerList(documentSnapshot.getId());
                posList.add(m);
            }
            Log.d(TAG,posList.toString()); //got value
        }
    });
    Log.d(TAG,posList.toString()); //got nothing     
}

正如您所看到的,当我尝试在函数 onSuccess 中添加值时,我得到了已添加的值,但是当我尝试添加外部函数时,我什么也没得到

这是我的数据库结构 在此处输入图像描述

标签: javaandroidfirebasearraylistgoogle-cloud-firestore

解决方案


您收到此错误是因为您将异步调用与同步调用混合在一起。onSuccess当您从 Firebase 成功接收数据时,将调用该方法(异步)。但是 onCreateView 方法不会等待。它会直接进入第二个

Log.d(TAG,posList.toString()); //got nothing

你什么也得不到(实际上我认为你会得到一个空字符串),因为你还没有收到数据。


推荐阅读