【发布时间】:2020-09-15 13:36:19
【问题描述】:
我是 Firebase 的新手 所以我有一个场景,我必须设置一个检查,如果一家酒店已经存在于 FavouriteHotels 节点中,那么这必须 Toast 这家酒店已经存在于 FavouriteHotels 节点中,否则只需存储点击的酒店。就像在这段代码中一样。
final String favHotel_Id = myRef.push().getKey();
myRef.child("Users").child(mUser.getUid())
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for (DataSnapshot userSnapshot : snapshot.getChildren()) {
if (!userSnapshot.child("FavouriteHotels").exists()){
Log.d(TAG, "onDataChange: "+userSnapshot.getChildren());
if (Objects.equals(hotelArrayList.get(position).getHotelName(), userSnapshot.child("Name").getValue() )) {
Toast.makeText(mContext, "Already saved to favourite hotels", Toast.LENGTH_SHORT).show();
} else {
if (favHotel_Id != null) {
myRef.child("Users").child(mUser.getUid()).child("FavouriteHotels").child(favHotel_Id).child("Name").setValue(hotelArrayList.get(position).getHotelName());
myRef.child("Users").child(mUser.getUid()).child("FavouriteHotels").child(favHotel_Id).child("Image").setValue(hotelArrayList.get(position).getImageID());
myRef.child("Users").child(mUser.getUid()).child("FavouriteHotels").child(favHotel_Id).child("rating").setValue(hotelArrayList.get(position).getHotelRating());
myRef.child("Users").child(mUser.getUid()).child("FavouriteHotels").child(favHotel_Id).child("Price").setValue(hotelArrayList.get(position).getHotelPrice());
}
}
}else {
Toast.makeText(mContext, "No Data Found", Toast.LENGTH_SHORT).show();
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
我要提到的一件事是,我正在从 ArrayList 中保存该酒店项目及其属性
if (Objects.equals(hotelArrayList.get(position).getHotelName(), userSnapshot.child("Name").getValue() )) {
Toast.makeText(mContext, "Already saved to favourite hotels", Toast.LENGTH_SHORT).show();
} else {
if (favHotel_Id != null) {
myRef.child("Users").child(mUser.getUid()).child("FavouriteHotels").child(favHotel_Id).child("Name").setValue(hotelArrayList.get(position).getHotelName());
myRef.child("Users").child(mUser.getUid()).child("FavouriteHotels").child(favHotel_Id).child("Image").setValue(hotelArrayList.get(position).getImageID());
myRef.child("Users").child(mUser.getUid()).child("FavouriteHotels").child(favHotel_Id).child("rating").setValue(hotelArrayList.get(position).getHotelRating());
myRef.child("Users").child(mUser.getUid()).child("FavouriteHotels").child(favHotel_Id).child("Price").setValue(hotelArrayList.get(position).getHotelPrice());
}
}
我想获取以圆圈突出显示的酒店的唯一键,并检查酒店名称,如果 hotelArrayList.get(position).getHotelName(), userSnapshot.child("Name").getValue() 则向我展示这家酒店已经存在于数据库中的祝酒词。
【问题讨论】:
标签: android firebase firebase-realtime-database arraylist