Java / Android - 更新匿名内部类中的ArrayList

问题描述 投票:0回答:1

我正在使用Google Cloud Firestore存储我的应用程序的数据,我正在尝试检索该数据并填充ArrayList

ArrayList是全局声明的并且在匿名内部类中成功更新,但是当我在调用包含匿名内部类的方法(以及使用最下面的Log调用测试其内容)之后使用ArrayList时,它是显示为空。

我一直在拔头发 - 任何帮助都将不胜感激!

谢谢。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    mCostsArrayList = new ArrayList<>();
//Get costs and sales data from Cloud FireStore - updates mCostsArrayList & mSalesArrayList
    getCostTransactions(costsCollectionRef);

//Gets Cloud Firestore costs transactions and puts to mCostsArrayList
private void getCostTransactions(CollectionReference collectionReference){
    collectionReference.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
        @Override
        public void onSuccess(QuerySnapshot documentSnapshots) {
            if (documentSnapshots.isEmpty()){
                Log.d(TAG, "OnSuccess: LIST EMPTY");
                return;
            } else {
                //Convert the whole Query Snapshot to a list of objects
                //Do not need to fetch each document
                List<BandTransaction> costs = documentSnapshots.toObjects(BandTransaction.class);
                mCostsArrayList.addAll(costs);
                Log.d(TAG, "onSuccess" + mCostsArrayList);
                return;
            }
        }
    }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            Toast.makeText(getActivity(), "Error getting data", Toast.LENGTH_SHORT).show();
        }
    });
    Log.d(TAG, "AFTER METHOD" + mCostsArrayList);
}
java android class arraylist anonymous-class
1个回答
0
投票

你确定在Log.d(TAG, "AFTER METHOD" + mCostsArrayList);方法之后调用onSuccess(QuerySnapshot documentSnapshots)这个行吗?这是一个回调方法,可以在以后调用它。尝试在2秒后调用Log.d(...)

new Handler().postDelayed(
            () -> Log.d(TAG, "AFTER METHOD" + mCostsArrayList),
            2000);
© www.soinside.com 2019 - 2024. All rights reserved.