Java 从firebase更新应用程序中变量的最佳实践
很抱歉,这个混乱的标题,我想不出更好的,所以如果有人有一个他认为更好的,请更新。Java 从firebase更新应用程序中变量的最佳实践,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,很抱歉,这个混乱的标题,我想不出更好的,所以如果有人有一个他认为更好的,请更新。 到问题的核心。 我有一个包含信息的Firebase实时数据库,我有以下类: public class FirebaseUtil implements Constants { private static final String fbRoot = "foods", fbName = "name", fbImage = "image"; privat
到问题的核心。
我有一个包含信息的Firebase实时数据库,我有以下类:
public class FirebaseUtil implements Constants {
private static final String fbRoot = "foods",
fbName = "name",
fbImage = "image";
private static FirebaseUtil instance;
public static FirebaseUtil getInstance() {
return instance == null ? new FirebaseUtil() : instance;
}
private FirebaseDatabase mFBDB;
private int mItemCount = 10;
private boolean mItemCountUpdateRecently = false;
private FirebaseUtil() {
instance = this;
mFBDB = FirebaseDatabase.getInstance();
}
public void getNumberOfItems() {
mFBDB.getReference(fbRoot).addListenerForSingleValueEvent(new VEListenerWrapper(runnable) {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
在getNumberOfItems()
中,我想获取名为“foods”(fbRoot
)的分支的子级数,并将其更新为mItemCount
到目前为止,我采用的方法是创建一个
ValueEventListener
包装器,它有一个接口,一旦onDataChange
完成并更新我的值,就会执行该包装器。老实说,我认为这是一种非常糟糕的做法,这就是为什么我试图了解从
ValueEventListener
内部更改变量的最佳方式,或者通常可以接受的方式。请注意,我想更新firebase中不存在的值。如果只想更新值,不需要使用
ValueEventListener
,只需要直接在引用上使用setValue()
方法
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
rootRef.child("name").setValue("John");
如果要控制子对象的数量,只需直接在dataSnapshot
对象上使用getChildrenCount()
方法即可。但请记住,要将此数字设置为视图,请在onDataChange
方法中使用set方法,因为此方法是异步调用的
希望有帮助。对不起,问题不够清楚,请更正。