2016-08-31 84 views
0

我有这个数据库:FirebaseRecyclerAdapter与2名儿童

Database: 
    X:{ 
    UserID:{ 
     UNIQUE_ID_GENERATED_BY_PUSH_METHOD:{ 
      x:"hello", 
      y:"hey there!" 
     } 
     UNIQUE_ID_2_GENERATED_BY_PUSH_METHOD:{ 
      x:"what's up?", 
      y:"Nothing Much" 
     } 
    } 
    UserID2:{ 
     UNIQUE_ID_GENERATED_BY_PUSH_METHOD:{ 
      x:"bye", 
      y:"Have a nice day!" 
     } 
     UNIQUE_ID_2_GENERATED_BY_PUSH_METHOD:{ 
      x:"what's up?", 
      y:"Nothing Much" 
     } 
    } 
} 

但是,我FirebaseRecyclerAdapter是空的,这个数据库,我通过这个DatabaseReferenceFirebaseRecyclerAdapter

DatabaseReference = FirebaseDatabase.getInstance().getReference().child("X"); 
mAdapter = new FirebaseRecyclerAdapter<Campaign, CampaignHolder>(Campaign.class, R.layout.recyclerview_template, CampaignHolder.class, ref) { 
//... 
} 

它正常工作时,我不每个帖子都没有用户的userID。所以如果我删除父母UserID,我的FirebaseRecyclerAdapter将不会为空。

我该如何解决这个问题?

+0

我不是很清楚你想完成什么。但是,如果您正在查看如何在视图中显示来自“链接实体”(示例JSON中的“x”)的信息,请阅读此答案:http://stackoverflow.com/questions/34559171/coupling-firebaserecyclerviewadapter- to-a-boolean-string-map-entry –

+0

@FrankvanPuffelen我不认为这是相关的;布尔值只是一个例子。我将编辑我的问题更清晰 –

+0

有了这个参考,你的'populateViewHolder()'将被调用给每个用户。你使用了一个'Campaign'类,这看起来不一样。您需要一个包含广告系列的“用户”类。 –

回答

2

拼合嵌套数据目前不是FirebaseUI的一项功能。如果您认为它有共同的需求,请提供feature request on the Github repo。尽管如此,我还没有看到这个请求,所以你可能会更好地建立在你自己的回购协议上。

2

看看这个拉请求:https://github.com/firebase/FirebaseUI-Android/pull/276 我认为这可能是你正在寻找的:如果你索引你的数据,你所要做的就是提供一个键列表来获得x和y。请参阅文档:https://github.com/SUPERCILEX/FirebaseUI-Android/blob/7e2be3aed73735e3d4e1a318cf268a5c9db67475/database/README.md#using-firebaseui-with-indexed-data

我认为你将不得不改变你的数据结构是这样的:

message-keys: { 
    uid1: { 
     key1: true 
     key2: true 
    } 
    uid2: { 
     key1: true 
     key2: true 
    } 
} 
messages: { 
    key1: { 
     x: "bye" 
     y: "Have a nice day!" 
    } 
    key2: { 
     x: "what's up?" 
     y: "Nothing Much" 
    } 
} 

然后,你将创建一个RecyclerView像这样:

new FirebaseRecyclerAdapter<Chat, ChatHolder>(Chat.class, android.R.layout.two_line_list_item, ChatHolder.class, ref.child("message-keys").child(uid), ref.child("messages")) 

希望这帮助!