2017-05-07 255 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()在随后的代码。