【发布时间】:2022-01-26 23:43:15
【问题描述】:
我想在我的回收站视图中实现类似的东西,我想显示 CONSTANT UP TO DATE 数据,即“ROOMSTATUS”
想象一下,我有两个不同的帐户,一个是员工帐户和客户帐户,当客户将他想要的物品添加到购物车时,房间状态显然是可用的,客户可以这样做
但是,如果客户还没有结帐该特定商品,并且员工方面发生了突然变化,例如员工更改了客户添加到购物车中的特定商品变得不可用,这意味着它不会让客户检查该特定项目,但我想做的只是让回收站视图上显示的文本类似于项目选择列表上的文本。
但是,每当我进入那个活动时,它就会崩溃,并给我这个错误,
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object参考 在 com.example.fyptest1.CustomerBookedRoomAdapter$1.onDataChange(CustomerBookedRoomAdapter.java:54)"
我认为它说,updatedRoomStatus = snapshot.child("roomstatus").getValue().toString(); 此行没有从 firebase 获取任何数据,但我可以确保其中有数据
我不确定是不是因为我已经实现了 onDataChanged 关键字,还有其他方法可以解决这个问题吗?
@Override
protected void onBindViewHolder(@NonNull @NotNull CustomerBookedRoomAdapter.myViewHolder holder, int position, @NonNull @NotNull RoomDataForAdapter model) {
roomnameunderCustomerBooked = model.getRoomname();
dataRef = FirebaseDatabase.getInstance().getReference().child("Rooms");
dataRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull @NotNull DataSnapshot snapshot) {
if(snapshot.child(roomnameunderCustomerBooked).child("roomname").exists()){
String updatedRoomStatus = "";
updatedRoomStatus = snapshot.child("roomstatus").getValue().toString();
holder.roomName.setText(model.getRoomname());
holder.roomType.setText(model.getRoomtype());
holder.roomCapacity.setText(model.getRoomcapacity());
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.roomPrice.setText(model.getRoomprice());
holder.roomCharacteristics.setText(model.getRoomcharacteristics());
Picasso.get().load(model.getImageurl()).fit().into(holder.roomImage);
}else{
}
}
@Override
public void onCancelled(@NonNull @NotNull DatabaseError error) {
}
});
这是我的数据库结构
{
"Customer" : {
"tjing123" : {
"email" : "jh@gmail.com",
"fullname" : "JingHuan",
"password" : "1",
"username" : "tjing123"
}
},
"CustomerBookedRooms" : {
"tjing123" : {
"Always" : {
"imageUrl" : "https://firebasestorage.googleapis.com/v0/b/finalyearprojectapplicat-8a301.appspot.com/o/RoomImageStorage%2F20476d50-0256-4637-a85f-88cfb0d49509%2Fcontent%3A%2Fcom.android.providers.media.documents%2Fdocument%2Fimage%253A76555?alt=media&token=9042d0c2-1203-48a9-85e0-66de5c30eb84",
"roombedcounts" : "One Bed",
"roomcapacity" : "1 pax",
"roomcharacteristics" : "Cozy",
"roomname" : "Always",
"roomprice" : "588.00",
"roomstatus" : "Available",
"roomtype" : "Single Room",
"username" : "tjing123"
},
"Kokomi" : {
"imageUrl" : "https://firebasestorage.googleapis.com/v0/b/finalyearprojectapplicat-8a301.appspot.com/o/RoomImageStorage%2F175ac041-af4d-4ffd-8b0f-0f04f3b293f5%2Fcontent%3A%2Fcom.google.android.apps.photos.contentprovider%2F0%2F1%2Fmediakey%253A%252Flocal%25253Ab456c215-0536-4e05-8f77-616f83d36055%2FORIGINAL%2FNONE%2F1931479739?alt=media&token=1cab4f94-929f-4f52-8a46-aa76c82a0848",
"roombedcounts" : "Two Beds",
"roomcapacity" : "2 pax",
"roomcharacteristics" : "Cozy",
"roomname" : "Kokomi",
"roomprice" : "499.00",
"roomstatus" : "Available",
"roomtype" : "Couple Room",
"username" : "tjing123"
},
"The Nuts" : {
"imageUrl" : "https://firebasestorage.googleapis.com/v0/b/finalyearprojectapplicat-8a301.appspot.com/o/RoomImageStorage%2Fd0f0279a-121b-4747-bdf0-76c9e7bfb30c%2Fcontent%3A%2Fcom.android.providers.media.documents%2Fdocument%2Fimage%253A76556?alt=media&token=e234d404-adfd-4a64-b180-50408c90a823",
"roombedcounts" : "One Bed",
"roomcapacity" : "2 pax",
"roomcharacteristics" : "Cozy",
"roomname" : "The Nuts",
"roomprice" : "258.00",
"roomstatus" : "Available",
"roomtype" : "Master Room",
"username" : "tjing123"
}
}
},
"Rooms" : {
"Always" : {
"imageUrl" : "https://firebasestorage.googleapis.com/v0/b/finalyearprojectapplicat-8a301.appspot.com/o/RoomImageStorage%2F20476d50-0256-4637-a85f-88cfb0d49509%2Fcontent%3A%2Fcom.android.providers.media.documents%2Fdocument%2Fimage%253A76555?alt=media&token=9042d0c2-1203-48a9-85e0-66de5c30eb84",
"roombedcounts" : "One Bed",
"roomcapacity" : "1 pax",
"roomcharacteristics" : "Cozy",
"roomid" : "1111",
"roomname" : "Always",
"roomprice" : "588.00",
"roomstatus" : "Maintenance",
"roomtype" : "Single Room"
},
"HEHE" : {
"imageUrl" : "https://firebasestorage.googleapis.com/v0/b/finalyearprojectapplicat-8a301.appspot.com/o/RoomImageStorage%2F36b436d2-0897-41a3-9d08-0ec48ec13a5d%2Fcontent%3A%2Fcom.android.providers.media.documents%2Fdocument%2Fimage%253A25?alt=media&token=2984d69a-b52c-4003-9adc-eb7556b97bf7",
"roombedcounts" : "Three Beds",
"roomcapacity" : "2 pax",
"roomcharacteristics" : "Scenery View",
"roomid" : "1111",
"roomname" : "HEHE",
"roomprice" : "399.00",
"roomstatus" : "Maintenance",
"roomtype" : "Master Room"
},
"Huan&Jian" : {
"imageUrl" : "https://firebasestorage.googleapis.com/v0/b/finalyearprojectapplicat-8a301.appspot.com/o/RoomImageStorage%2Fd8ad8454-29b4-4a44-b2c0-4da584c0cf17%2Fcontent%3A%2Fcom.android.providers.media.documents%2Fdocument%2Fimage%253A71334?alt=media&token=0cbd8564-adbd-4a69-8bbb-4c0b8af1ab5c",
"roombedcounts" : "One Bed",
"roomcapacity" : "2 pax",
"roomcharacteristics" : "Cozy",
"roomid" : "1314",
"roomname" : "Huan&Jian",
"roomprice" : "188.00",
"roomstatus" : "Maintenance",
"roomtype" : "Couple Room"
},
"Kokomi" : {
"imageUrl" : "https://firebasestorage.googleapis.com/v0/b/finalyearprojectapplicat-8a301.appspot.com/o/RoomImageStorage%2F175ac041-af4d-4ffd-8b0f-0f04f3b293f5%2Fcontent%3A%2Fcom.google.android.apps.photos.contentprovider%2F0%2F1%2Fmediakey%253A%252Flocal%25253Ab456c215-0536-4e05-8f77-616f83d36055%2FORIGINAL%2FNONE%2F1931479739?alt=media&token=1cab4f94-929f-4f52-8a46-aa76c82a0848",
"roombedcounts" : "Two Beds",
"roomcapacity" : "2 pax",
"roomcharacteristics" : "Cozy",
"roomid" : "5555",
"roomname" : "Kokomi",
"roomprice" : "499.00",
"roomstatus" : "Available",
"roomtype" : "Couple Room"
},
"The Nuts" : {
"imageUrl" : "https://firebasestorage.googleapis.com/v0/b/finalyearprojectapplicat-8a301.appspot.com/o/RoomImageStorage%2Fd0f0279a-121b-4747-bdf0-76c9e7bfb30c%2Fcontent%3A%2Fcom.android.providers.media.documents%2Fdocument%2Fimage%253A76556?alt=media&token=e234d404-adfd-4a64-b180-50408c90a823",
"roombedcounts" : "One Bed",
"roomcapacity" : "2 pax",
"roomcharacteristics" : "Cozy",
"roomid" : "7272",
"roomname" : "The Nuts",
"roomprice" : "258.00",
"roomstatus" : "Available",
"roomtype" : "Master Room"
}
},
"Staff" : {
"tt" : {
"email" : "rayray@gmail.com",
"fullname" : "raymondting",
"password" : "Abcbc123456789!",
"username" : "tt"
}
}
}
【问题讨论】:
-
请编辑您的问题并将您的数据库结构添加为 JSON 文件。您可以通过单击 Firebase Console 的溢出菜单 (⠇) 中的导出 JSON 来简单地获取它。
-
我已经附上了我的数据库结构,请看@AlexMamo,非常感谢!
标签: java android firebase firebase-realtime-database