gpt4 book ai didi

java - 在不调用addValueEventListener的情况下检索firebase数据库中的数据

转载 作者:行者123 更新时间:2023-12-01 17:41:15 25 4
gpt4 key购买 nike

我可以在不调用 addValueEventListener 的情况下从 firebase 数据库获取特定数据吗?在我的代码中,我成功使用 firebase 数据库获取数据,但是当我使用包含 addValueListener 的函数时并调用该函数我无法获取数据。这是我的代码:

 for(CheckOut g: GroceryActivity.list){

String pid = g.getPid();
Log.i("PID", pid);
getOriginalQuantity(pid);
Log.i("Original_Quantity", "" + originalQuantity);}

public void getOriginalQuantity(String pid){

originalQuantityReference = originalQuantityReference.child(pid);

originalQuantityReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Grocery grocery = dataSnapshot.getValue(Grocery.class);
originalQuantity = grocery.getQuantity().toString();
Log.i("Original Quantity", originalQuantity);
}

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

}
});
}//end getOriginalQuantity method

我从 addValueListener 中的日志中获取了正确的数据在另一个日志中我得到空值

最佳答案

Firebase api 是异步的,这意味着当您使用 AddValueEventListener 从数据库检索数据时,程序不会停止并继续执行。因此在此日志中:

Log.i("Original_Quantity", ""+originalQuantity);

您将得到 null,因为它是在完全检索数据之前执行的。有两种方法可以在 onDataChange 内访问数据,也可以执行以下操作:

How to return DataSnapshot value as a result of a method?

关于java - 在不调用addValueEventListener的情况下检索firebase数据库中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60900855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com