在我的 MainActivity 上,我有一个带有 CardView 的 RecyclerView 和一个链接到 Firebase 的适配器。
我已经设置了一个 ClickListener 来打开一个新的活动(每个 CardView 都有相同的活动,基本上它只是另一个带有 Cardview 的回收器视图),无论单击哪个CardView,我都设法通过使用getAdapterPosition()方法定位特定的 CardView。
现在我想做的是:
我想更改引用并设置一条新路径来针对我的火力基地中的另一个孩子,让我(几乎)清楚地解释一下:
这是我的JSON树:
{
"First_Main_Node" : {
"Child_Node1" : {
"description" : "Blabla",
"image" : "Image1.jpg",
"title" : "My Awesome Title"
},
"Child_Node2" : {
"description" : "Blabla",
"image" : "Image2.jpg",
"title" : "My Awesome Title"
},
"Child_Node3" : {
"description" : "Blabla",
"image" : "Image3.jpg",
"title" : "My Awesome Title"
},
"Child_Node4" : {
"description" : "Blabla",
"image" : "Image4.jpg",
"title" : "My Awesome Title"
},
"Child_Node5" : {
"description" : "Blabla",
"image" : "Image5.jpg",
"title" : "My Awesome Title"
},
"Child_Node6" : {
"description" : "Blabla",
"image" : "Image6.jpg",
"title" : "My Awesome Title"
},
"Child_Node7" : {
"description" : "Blabla",
"image" : "Image7.jpg",
"title" : "My Awesome Title"
},
"Child_Node8" : {
"description" : "Blabla",
"image" : "Image8.jpg",
"title" : "My Awesome Title"
}
},
"Second_Main_Node" : {
"Child_Node1" : {
"Element" : {
"image" : "Image1.jpg",
"price" : "100",
"title" : "My Awesome Title"
}
}
}
下面的行定位到Firebase中First_Main_Node的孩子 并使用"First_Main_Node -> Child_NodeX">提供的信息填充将在第一个回收器视图中显示的单个 CardView:
mRef = getInstance().getReference().child("/First_Main_Node")
现在我已经在第一个回收器视图的特定 CardView 上设置了一个 ClickListener,我想打开下一个活动(具有第二个回收器视图/CardView 的活动),但这一次,我不希望它从中获取数据 First_Main_Node -> Child_NodeX ,但是 Second_Main_Node -> Child_Node1
我该如何进行?
您是否要将First_Main_Node中的节点与Second_Main_Node中的相应节点相关联?在这种情况下,您必须在 First_Main_Node->Child1 中存储一个字符串,指示它与哪个关联的子项Second_Main_Node然后只需查询即可。
例如,如果您在包含Child_Node_2的Child_Node_1中有一个Second_Node_Ref字段,则可以检索它Second_Node子项相关联:
mRef = getInstance().getReference().child("Second_Main_Node").child("Child_Node_2")
此过程称为非规范化。