2017-07-23 79 views
0

對不起,混亂的標​​題,我不能提出一個更好的,所以如果有人有他認爲更好的,請更新。
問題的核心。
我有信息的火力地堡實時數據庫,我有下面的類:從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()我想所謂的「食物」(fbRoot)分支的孩子的數量,並更新到mItemCount
我到目前爲止的方式是創建一個ValueEventListener包裝器,它具有一個接口,一旦完成onDataChange就會被執行並更新我的值。
老實說,我認爲這是一個非常糟糕的做法,這就是爲什麼我想了解從ValueEventListener內部更改變量的最佳方法是什麼,或者一般情況下可接受的方式是什麼。
請注意,我想更新一個在firebase中不存在的值

回答

0

如果你只是想更新一個值,你不需要使用ValueEventListener,你只需要直接在引用上使用setValue()方法。

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

如果你想續兒童的數量,然後就直接在dataSnapshot對象使用getChildrenCount()方法。但請記住,要將此數字設置爲視圖,請在onDataChange方法內使用set方法,因爲此方法是異步調用的。

希望它有幫助。

+0

對不起,這個問題還不夠清楚,糾正它。 –

相關問題