从firebase

时间:2017-07-23 15:16:51

标签: java android firebase firebase-realtime-database

对不起那个凌乱的标题,我无法想出一个更好的标题,所以如果某人有一个他认为更好的标题,请更新。
问题的核心。
我有一个包含信息的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中不存在的值

1 个答案:

答案 0 :(得分:0)

如果您只想更新某个值,则无需使用ValueEventListener,只需直接在引用上使用setValue()方法即可。

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
rootRef.child("name").setValue("John");

如果您想要控制孩子的数量,请直接在getChildrenCount()对象上使用dataSnapshot方法。但请记住,要将此数字设置为视图,请在onDataChange方法中使用set方法,因为此方法是异步调用的。

希望它有所帮助。