我有这个数据库:
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
将不会为空。
如何解决此问题?
答案 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"))
希望这有帮助!