Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从firebase更新应用程序中变量的最佳实践_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

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方法,因为此方法是异步调用的


希望有帮助。

对不起,问题不够清楚,请更正。