对不起那个凌乱的标题,我无法想出一个更好的标题,所以如果某人有一个他认为更好的标题,请更新。
问题的核心。
我有一个包含信息的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()
内部,我想得到分支的孩子数量,这些食物被称为" food" (fbRoot
)并将其更新为mItemCount
到目前为止我接近它的方法是创建一个ValueEventListener
包装器,它有一个接口,将在onDataChange
完成后执行并更新我的值。
说实话,我认为这是一个非常糟糕的做法,这就是为什么我试图理解从ValueEventListener
内部更改变量的最佳方法,或者一般来说可以接受的方法是什么。
请注意,我想更新firebase中不存在的值。
答案 0 :(得分:0)
如果您只想更新某个值,则无需使用ValueEventListener
,只需直接在引用上使用setValue()
方法即可。
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
rootRef.child("name").setValue("John");
如果您想要控制孩子的数量,请直接在getChildrenCount()
对象上使用dataSnapshot
方法。但请记住,要将此数字设置为视图,请在onDataChange
方法中使用set方法,因为此方法是异步调用的。
希望它有所帮助。