FirebaseRecyclerAdapter有2个孩子

时间:2016-08-31 20:10:39

标签: android firebase firebase-realtime-database firebaseui

我有这个数据库:

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传递给DatabaseReference时,我的FirebaseRecyclerAdapter对此数据库为空:

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

当我没有在用户userID下发布每个帖子时,它可以正常工作。因此,如果我删除了父UserID,我的FirebaseRecyclerAdapter将不会为空。

如何解决此问题?

2 个答案:

答案 0 :(得分:2)

展平嵌套数据目前不是FirebaseUI的一项功能。如果您认为有共同需求,请提交feature request on the Github repo。我之前没有看过这个请求,所以你可能最好在你自己的repo上构建它。

答案 1 :(得分: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"))

希望这有帮助!