2017-04-26 74 views
0

,add方法工作得很好,這是我的數據的基礎上,我創建enter image description here安卓Firedatabase更新數據

可以說我有3個按鈕每一個代表一個酒店酒店名稱作爲文本,可以說我點擊了按鈕,其中包含文本aze,我正在尋找一種方法來減少商會的數量1,酒店名稱是aze,我該怎麼做?謝謝你提前

回答

0

試試這個在消防基地更新值

mFirebaseDatabaseReference.child("Hotels") 
         .child(model.getUid()) 
          .child("chambers") 
          .setValue(YourValueHere); 

希望這有助於你。

+0

什麼是model.getUid() –

+0

將其替換爲節點UUID,即如果要更新'aze'的數據,節點名稱將會出現在那裏。 –

+0

KieqUXeYm多數民衆贊成節點的名稱,只需將其替換 –

0

您不必使用hotel name作爲標識符,則需要使用hotel id。因此,取代酒店名稱「按住」按鈕,您需要「持有」酒店ID。比單擊該按鈕時,進行更新將非常容易。使更新的代碼如下:

yourReference.child("Hotel").child(hotelId).child("chambers").setValue(yourValue);

在其hotelId是由push()方法生成的唯一的ID。

要獲得ID,你需要使用此代碼:

DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference hotelsReference = databaseReference.child("Hotels").push(); 
String hotelId = hotelsReference.getKey(); 

希望它能幫助。

+0

我明白你在說什麼!我認爲這是我在找什麼,但還有一件事,我如何得到hotelId像上面的圖片中的一個KieqFUwuGAUUtCvSHDY我的意思是喜歡把它存儲在一個字符串,然後通過它作爲hotelId –

+0

是的商店,hotelId在任何字符串,然後在child()方法中傳遞它。 –

+0

請看我更新的答案 –

0

那麼首先我會建議你閱讀firebase文檔。如果你不明白,那就問。 但仍然需要在onClick方法中鍵入此代碼。

DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference().child("Hotels"); 
    databaseReference.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      HashMap<String, HashMap<String,Object>> nameMap = (HashMap<String, HashMap<String,Object>>) dataSnapshot.getValue(); 
      if (nameMap != null) { 
       for (String key : nameMap.keySet()) { 
        HashMap<String,Object> hotel=nameMap.getValue(key); 
        if(hotel.getValue("adresse").toString().equals("aze")) 
        { 
        Long chambers=(Long)hotel.getValue("chamber"); 
        HashMap<String, Object> map = new HashMap<>(); 
        map.put("chambers", chambers-1); 
        DatabaseReference childDatabaseReference = FirebaseDatabase.getInstance().getReference().child("Hotels").child("key").updateChildren(map); 
        } 
       } 
      } 

     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 
     } 
    }); 

我還沒有測試過,所以可能會出現錯誤。 但它只是這樣。