【发布时间】:2020-07-09 01:39:28
【问题描述】:
我可以在不调用 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 的日志中获取正确的数据,而在另一个日志中我得到 null valeu
【问题讨论】:
-
正如其他人所说:Firebase API(与大多数现代云 API 一样)是异步的。同步使用它的唯一方法是调用其 HTTPS REST API,但我强烈建议不要这样做。你能做的最好的事情就是掌握异步编程。这需要时间,但会给你最好的结果,你的用户是最好的应用程序。如需更长的解释,请在此处查看我的答案:stackoverflow.com/questions/50434836/…
标签: java android firebase firebase-realtime-database