【发布时间】:2022-01-27 23:19:50
【问题描述】:
为什么我没有得到数据,即使我已经明确指出了我对那个孩子的那个孩子的引用
我的目标是:
首先,检查客户是否在 RoomsToCustomer 表中预订了特定房间,如果它是真的,则转到第二个检查,即检查房间名称是否仍然存在于 Rooms 表中,如果它是真的,然后从那里检索所有内容,但是问题是它似乎根本没有检索数据,我不知道为什么。
@Override
protected void onBindViewHolder(@NonNull @NotNull CustomerBookedRoomAdapter.myViewHolder holder, int position, @NonNull @NotNull RoomDataForAdapter model) {
roomnameunderCustomerBooked = model.getRoomname();
dataReferenceForCUSTBOOKEDADPT = FirebaseDatabase.getInstance().getReference().child("Rooms");
dataReferenceForROOMBOOKEDBOOLEAN = FirebaseDatabase.getInstance().getReference().child("RoomsToCustomer");
dataReferenceForROOMBOOKEDBOOLEAN.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull @NotNull DataSnapshot snapshotter) {
if(snapshotter.child(roomnameunderCustomerBooked).child(usernameFGS).equals(true)){
dataReferenceForCUSTBOOKEDADPT.addValueEventListener(new ValueEventListener() {
@Override
//model.getRoomname().equals(snapshot.child("roomname").exists())
public void onDataChange(@NonNull @NotNull DataSnapshot snapshot) {
if(roomnameunderCustomerBooked.equals(snapshot.child(roomnameunderCustomerBooked).exists())){
String updatedRoomStatus = snapshot.child(roomnameunderCustomerBooked).child("roomstatus").getValue().toString();
String roomType = snapshot.child(roomnameunderCustomerBooked).child("roomtype").getValue().toString();
String roomCapacity = snapshot.child(roomnameunderCustomerBooked).child("roomcapacity").getValue().toString();
String roomName = snapshot.child(roomnameunderCustomerBooked).child("roomname").getValue().toString();
String roomPrice = snapshot.child(roomnameunderCustomerBooked).child("roomprice").getValue().toString();
String roomCharacteristics = snapshot.child(roomnameunderCustomerBooked).child("roomcharacteristics").getValue().toString();
String roomImage = snapshot.child(roomnameunderCustomerBooked).child("imageUrl").getValue().toString();
holder.roomName.setText(roomName);
holder.roomType.setText(roomType);
holder.roomCapacity.setText(roomCapacity);
if(updatedRoomStatus.equals("Available")){
String availaFormat = "Available ";
holder.roomStatus.setText(availaFormat);
holder.roomStatus.setTextColor(Color.parseColor("#226600"));
}else if(updatedRoomStatus.equals("Unavailable")){
String unavailaFormat = "Unavailable ";
holder.roomStatus.setText(unavailaFormat);
holder.roomStatus.setTextColor(Color.parseColor("#C91818"));
}else if(updatedRoomStatus.equals("Maintenance")){
String umFormat = "Under\nMaintenance";
holder.roomStatus.setText(umFormat);
holder.roomStatus.setTextColor(Color.parseColor("#CCAA00"));
//Set room "Under Maintenance" word alignment in a proper way
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(29,-28,0,0);
holder.roomStatus.setLayoutParams(params);
}
else{
holder.roomStatus.setText(updatedRoomStatus);
holder.roomStatus.setTextColor(Color.parseColor("#a4c639 "));
}
holder.roomPrice.setText(roomPrice);
holder.roomCharacteristics.setText(roomCharacteristics);
Picasso.get().load(roomImage).fit().into(holder.roomImage);
}
}
@Override
public void onCancelled(@NonNull @NotNull DatabaseError error) {
}
});
}else{
}
}
@Override
public void onCancelled(@NonNull @NotNull DatabaseError error) {
}
});
请看一下我的 JSON 文件:
{
"Customer" : {
"johnny123" : {
"email" : "johnny@gmail.com",
"fullname" : "johnny",
"password" : "Abcbc12345",
"username" : "johnny123"
},
"tjing123" : {
"email" : "jh@gmail.com",
"fullname" : "JingHuan",
"password" : "1",
"username" : "tjing123"
}
},
"CustomerBookedRooms" : {
"johnny123" : {
"CozyCone" : {
"imageUrl" : "https://firebasestorage.googleapis.com/v0/b/finalyearprojectapplicat-8a301.appspot.com/o/RoomImageStorage%2F7b07e1ba-dabb-43b4-872b-087df75f8df6%2Fcontent%3A%2Fcom.google.android.apps.photos.contentprovider%2F0%2F1%2Fmediakey%253A%252Flocal%25253A277e0ed8-e053-48bb-8d04-3d720ba8264e%2FORIGINAL%2FNONE%2F691350677?alt=media&token=b043022c-a54a-4e2e-afa2-345d266c9c47",
"roombedcounts" : "One Bed",
"roomcapacity" : "2 pax",
"roomcharacteristics" : "Cozy",
"roomname" : "CozyCone",
"roomprice" : "288.00",
"roomstatus" : "Available",
"roomtype" : "Master Room",
"username" : "johnny123"
},
"TheVamps" : {
"imageUrl" : "https://firebasestorage.googleapis.com/v0/b/finalyearprojectapplicat-8a301.appspot.com/o/RoomImageStorage%2F60ea14ef-93bf-4c04-bb75-0a95731511dd%2Fcontent%3A%2Fcom.google.android.apps.photos.contentprovider%2F0%2F1%2Fmediakey%253A%252Flocal%25253A9145b259-426c-447a-a6b0-53cbf5770ace%2FORIGINAL%2FNONE%2F558417666?alt=media&token=eb57f6e6-fd81-4d90-a485-de40885a4a43",
"roombedcounts" : "One Bed",
"roomcapacity" : "2 pax",
"roomcharacteristics" : "Cozy",
"roomname" : "TheVamps",
"roomprice" : "499.00",
"roomstatus" : "Available",
"roomtype" : "Master Room",
"username" : "johnny123"
}
},
"tjing123" : {
"CozyCone" : {
"imageUrl" : "https://firebasestorage.googleapis.com/v0/b/finalyearprojectapplicat-8a301.appspot.com/o/RoomImageStorage%2F7b07e1ba-dabb-43b4-872b-087df75f8df6%2Fcontent%3A%2Fcom.google.android.apps.photos.contentprovider%2F0%2F1%2Fmediakey%253A%252Flocal%25253A277e0ed8-e053-48bb-8d04-3d720ba8264e%2FORIGINAL%2FNONE%2F691350677?alt=media&token=b043022c-a54a-4e2e-afa2-345d266c9c47",
"roombedcounts" : "One Bed",
"roomcapacity" : "2 pax",
"roomcharacteristics" : "Cozy",
"roomname" : "CozyCone",
"roomprice" : "288.00",
"roomstatus" : "Available",
"roomtype" : "Master Room",
"username" : "tjing123"
},
"TheVamps" : {
"imageUrl" : "https://firebasestorage.googleapis.com/v0/b/finalyearprojectapplicat-8a301.appspot.com/o/RoomImageStorage%2F60ea14ef-93bf-4c04-bb75-0a95731511dd%2Fcontent%3A%2Fcom.google.android.apps.photos.contentprovider%2F0%2F1%2Fmediakey%253A%252Flocal%25253A9145b259-426c-447a-a6b0-53cbf5770ace%2FORIGINAL%2FNONE%2F558417666?alt=media&token=eb57f6e6-fd81-4d90-a485-de40885a4a43",
"roombedcounts" : "One Bed",
"roomcapacity" : "2 pax",
"roomcharacteristics" : "Cozy",
"roomname" : "TheVamps",
"roomprice" : "499.00",
"roomstatus" : "Available",
"roomtype" : "Master Room",
"username" : "tjing123"
}
}
},
"Rooms" : {
"CozyCone" : {
"imageUrl" : "https://firebasestorage.googleapis.com/v0/b/finalyearprojectapplicat-8a301.appspot.com/o/RoomImageStorage%2F7b07e1ba-dabb-43b4-872b-087df75f8df6%2Fcontent%3A%2Fcom.google.android.apps.photos.contentprovider%2F0%2F1%2Fmediakey%253A%252Flocal%25253A277e0ed8-e053-48bb-8d04-3d720ba8264e%2FORIGINAL%2FNONE%2F691350677?alt=media&token=b043022c-a54a-4e2e-afa2-345d266c9c47",
"roombedcounts" : "One Bed",
"roomcapacity" : "2 pax",
"roomcharacteristics" : "Cozy",
"roomcounts" : "115",
"roomid" : "1234",
"roomname" : "CozyCone",
"roomprice" : "288.00",
"roomstatus" : "Available",
"roomtype" : "Master Room"
},
"TheVamps" : {
"imageUrl" : "https://firebasestorage.googleapis.com/v0/b/finalyearprojectapplicat-8a301.appspot.com/o/RoomImageStorage%2F60ea14ef-93bf-4c04-bb75-0a95731511dd%2Fcontent%3A%2Fcom.google.android.apps.photos.contentprovider%2F0%2F1%2Fmediakey%253A%252Flocal%25253A9145b259-426c-447a-a6b0-53cbf5770ace%2FORIGINAL%2FNONE%2F558417666?alt=media&token=eb57f6e6-fd81-4d90-a485-de40885a4a43",
"roombedcounts" : "One Bed",
"roomcapacity" : "2 pax",
"roomcharacteristics" : "Cozy",
"roomcounts" : "29",
"roomid" : "8888",
"roomname" : "TheVamps",
"roomprice" : "499.00",
"roomstatus" : "Available",
"roomtype" : "Master Room"
}
},
"RoomsToCustomer" : {
"CozyCone" : {
"johnny123" : true,
"tjing123" : true
},
"TheVamps" : {
"johnny123" : true,
"tjing123" : true
}
},
"Staff" : {
"tt" : {
"email" : "raymondting521@gmail.com",
"fullname" : "raymondting",
"password" : "Abcbc12345",
"username" : "tt"
}
}
}
【问题讨论】:
-
这能回答你的问题吗? Google firebase check if child exists。
....child(usernameFGS).equals(true)永远不会是真的。 -
但在我的数据库中这是真的
-
DataSnapshot.child(String)返回另一个DataSnapshot,而不是该节点的值。您可以查看here 了解如何正确读取数据的详细信息。 -
我可以修改什么来改进或修复当前代码@HenryTwist,不胜感激
-
在阅读了我链接的文章后,您有什么收获?
标签: java android firebase-realtime-database