2017-05-09 91 views
0

我試圖使用Firebase來管理我的ListView。 問題是我想列出名爲Gruppo的自定義對象,其中包含其他對象,而不僅僅是String。 是否可以使用FirebaseListAdapter或者我必須發明另一種策略來在所有手機上實時更新我的​​ListView?Firebase ListAdapter與自定義對象

那爲什麼如果我這樣做:

FirebaseDatabase database = FirebaseDatabase.getInstance("my_app_URL/"); 
    DatabaseReference rootRef = database.getReference(); 
    DatabaseReference groups = rootRef.child("groups"); 
    Query ref = groups; 

查詢是空的,它沒有考慮組的所有孩子?

有人可以發佈一個很好的教程嗎? 我已經遵循這樣的:https://www.youtube.com/watch?v=2J6spwAVP0M

感謝

回答

0

火力地堡能夠反序列化節點的對象不是單一的String與字段名稱和數據結構的一些制約因素更加複雜。
IE
在火力地堡數據庫:

groups: { 
    keyGroup1: { 
     groupName: "groupOne", 
     numParticipants: "2", 
     participants: { 
      keyPart1: { 
       name: "John", 
       surname: "Doe" 
      }, 
      keyPart2: { 
       name: "Jane", 
       surname: "Doe" 
      } 
     } 
    }, 
    keyGroup2: { 
     groupName: "groupTwo", 
     numParticipants: "1", 
     participants: { 
      keyPart1: { 
       name: "Chris", 
       surname: "Abc" 
      } 
     } 
    } 
} 

在Android中:

public class Group { 
    private String groupName; 
    private int numParticipants; 
    private Map<String, Participant> participants; 

    // Constructor, getters and setters 
} 

public class Participant { 
    private String name; 
    private String surname; 

    // Constructor, getters and setters 
} 

那麼你可以傳遞Group.classFirebaseListAdapter構造:

new FirebaseListAdapter<Group>(/* Activity */, Group.class, /* Layout */, /* DatabaseRef */); 

但是,如果你的數據結構非常合作使用ValueEventListener手動實例化對象和自定義Adapter可能會更安全。