带有 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"))
希望对您有所帮助!
我有这个数据库:
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"))
希望对您有所帮助!