2017-07-19 15 views
0

讓我們考慮一個屬性爲「電子郵件」的「UserBean」,它是ArrayList<EmailBean>Android - 使用Firebase上的特定鍵保存對象屬性列表

當保存在火力地堡是這樣的:

"users" : { 
    "$userID" : { 
     "emails" : [ 
      "0" : { 
       "type" : "first", 
       "address" : "[email protected]", 
       "private" : true 
      }, 
      "1" : { 
       "type" : "second", 
       "address" : "[email protected]", 
       "private" : false" 
      } 
     ], 
     "name" : "Mitch" 
    } 
} 

所以是有可能實現這樣的事情:

"users" : { 
    "$userID" : { 
     "emails" : [ 
      "first" : { 
       "address" : "[email protected]", 
       "private" : true 
      }, 
      "second" : { 
       "address" : "[email protected]", 
       "private" : false 
      } 
     ], 
     "name" : "Mitch" 
    } 
} 

我寧願不必每個地址逐個保存時間。

也許有一個註釋告訴Firebase將此屬性用作關鍵字?

問候。

回答

1

我建議你使用下面的代碼:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference emailsRef = rootRef.child("users").child(userId).child("emails"); 
ValueEventListener eventListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for(DataSnapshot ds : dataSnapshot.getChildren()) { 
      String type = ds.child("type").getValue(String.class); 
      ds.child("type").getRef().getParent().setValue(type); 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) {} 
}; 
emailsRef.addListenerForSingleValueEvent(eventListener); 

有什麼我試圖用這個代碼?所以爲了達到你想要的,首先我們得到了你的鑰匙的價值。然後我們在樹中進入一步,併爲每個特定節點設置您的密鑰的值爲type

將類型值替換爲0, 1 and so on,爲了完成工作,只需從每個節點上使用removeValue()方法直接刪除type key即可。

相關問題