2017-05-07 254 views
0

解串名單我有包含列表的模型。崩潰從火力地堡

class Group { 
    List<String> members; 
    // Other fields 
} 

我使用databaseRef.setValue(group)將整個模型插入到Firebase中。現在它被正確插入到firebase中,但是當我嘗試在members字段中添加任何新值時會出現問題。

我使用membersRef.push().setValue("[email protected]")在成員添加新的字段列表上的火力點。

Group對象最初創建時,Firebase使用「0」,「1」等作爲鍵,但是當我push()時,它創建一個唯一的String作爲鍵。

我創建Java對象返回使用此代碼:

groupReference.addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     Group group = dataSnapshot.getValue(Group.class); 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 

    } 
}); 

現在的問題從火力地堡創建是當Group類回到它試圖在members字段轉換的List,因爲它是從鑰匙啓動0但一些迭代後有一個String鍵(類似「-KjTzYGRDZN99rBZfPDF」),所以它崩潰試圖將其轉換爲List

我的火力地堡對象看起來是這樣的:

Group 
|-----members 
     |----0: "[email protected]" 
     |-----KjTzYGRDZN99rBZfPDF: "[email protected]" 

我很困惑我該如何解決這個問題。我如何告訴firebase使用唯一的密鑰而不是0,1,2等?

回答

0

使用HashMap代替List。那麼當將group對象存儲在firebase上時,請確保hashmap爲空。現在,你可以遷移到membersRef,把你想使用一個循環中的所有值與push()setValue()在隨後的代碼。