【发布时间】:2017-06-06 09:59:09
【问题描述】:
我正在开发一个 Android+Firebase 应用,但由于我对这两种技术都不熟悉,所以我在异步调用方面遇到了问题,我还没有找到解决方案,所以希望你能帮助我。
我的 Activity 的 onCreate 方法中有以下 sn-p:
final ArrayList<AssetLocation> assetsLocations = new ArrayList<>();
DatabaseReference assetsLocationReference = database.getReference(FirebaseReferences.ASSETSLOCATION_REFERENCE);
assetsLocationReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
ArrayList<String> assetsLocationSpinner = new ArrayList<String>();
// Create an ArrayAdapter using the string array and a default spinner layout
for (DataSnapshot postSnapshot : snapshot.getChildren()) {
//Getting the data from snapshot
AssetLocation assetsLocation = postSnapshot.getValue(AssetLocation.class);
assetsLocations.add(AssetLocation);
}
}
@Override
public void onCancelled(DatabaseError firebaseError) {
System.out.println("The read failed: " + firebaseError.getMessage());
}
});
我也有一个非常相似的调用,但我得到的是 Types,而不是 Locations。
在这段代码之后(也在 onCreate 方法中),我调用setScreenInfo 这是一个用所述数据填充两个微调器(并做更多事情)的函数,但由于它是一个异步调用,微调器是执行时空白。
拨打电话后如何执行setScreenInfo?我尝试使用 .once()/.on(),但它没有被 Android Studio 识别为函数。
感谢您的帮助!
【问题讨论】:
标签: android firebase firebase-realtime-database