带有 2 children 的 FirebaseRecyclerAdapter

FirebaseRecyclerAdapter with 2 children

我有这个数据库:

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"
       }
   }  
}

但是,当我将这个 DatabaseReference 传递给我的 FirebaseRecyclerAdapter:

时,我的 FirebaseRecyclerAdapter 和这个数据库是空的
DatabaseReference = FirebaseDatabase.getInstance().getReference().child("X");
mAdapter = new FirebaseRecyclerAdapter<Campaign, CampaignHolder>(Campaign.class, R.layout.recyclerview_template, CampaignHolder.class, ref) {
//...
}

当我没有每个 post 在用户的 userID 下时,它工作正常。因此,如果我删除 parent UserID,我的 FirebaseRecyclerAdapter 将不会为空。

我该如何解决这个问题?

扁平化嵌套数据目前不是 FirebaseUI 的一项功能。如果您认为有普遍需求,请提交 feature request on the Github repo。不过我以前没见过这个请求,所以你最好在你自己的回购分支上构建它。

查看此拉取请求: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"))

希望对您有所帮助!