如何在一次查询中保持异步调用以从Firebase获取数据?

我正在调用一个函数,该函数进一步从firebase DB中获取数据。

拨打电话:

List<DataObj> dataObjList = FireBaseHandler.getInstance().getDataFromServer(context, _id);

getDataFromServer():

{
.
.
.
localDatabaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for(DataSnapshot dataItemSnapshot: dataSnapshot.getChildren()) {
                    DataItem dataItem = dataItemSnapshot.getValue(DataItem.class);
                    if (dataItem != null && dataItem.get_id() != -1) {
                        dataItemList.add(dataItem);
                    }
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

        return dataItemList;
}

但是在我从Firebase获取数据之前,此函数将返回一个空对象列表。如何处理这种情况?

评论