2017-11-18 124 views
0

我試圖當用戶點擊一個按鈕如何在Android設備上

這裏只更新場火力地堡數據庫更新只有特定的字段是database

image

我需要的時候更新report_status用戶點擊一個按鈕

b1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
     report_value=Integer.parseInt(arrayforreport.get(posi)); 
      report_value++; 
     databaseReference.addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       //i need to update report_status by id 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 

      } 
     }); 

     } 
    }); 

回答

1

addValueEventListener是檢索值,你不需要它來設置值。

首先從DatabaseReference獲得密鑰,然後使用setValue更改該值。

b1.setOnClickListener(new View.OnClickListener() { 
    @Override 
     public void onClick(View v) { 
      report_value=Integer.parseInt(arrayforreport.get(posi)); 
      report_value++; 

      DatabaseReference databaseReference = adapter.getRef(position); 
      String key = databaseReference.getKey(); 

      databaseReference.child("type").child("Whatsapp").child("Shopping Deals").child(key).child("report_status").setValue(report_status); 

     } 
    }); 
+0

adapter.getRef(現在的位置)這是什麼立場可以ü請解釋一下..是該適配器變量屬於陣列適配器? beacuse亞姆面臨的問題,以獲得關鍵..其中用戶點擊列表項目 –

+0

你面臨的問題是什麼? –

+0

我無法獲得用戶選擇字段的ID –

2

爲了更新您的火力地堡數據庫中的值沒有必要附加一個監聽器,當你需要讀取數據時,才需要。因此,要更新特定節點,您只需直接在databaseReference對象上使用setValue()方法。

所以假設type節點是你的火力地堡數據庫的直接孩子,請用下面的代碼行:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); 
rootRef.child("type") 
    .child("Whatsapp") 
    .child("Shopping Deals") 
    .child(shoppingDealId) 
    .child("report_status") 
    .setValue("newValue"); 

在這shoppingDealId是一個特殊的購物交易的ID。您可以使用下面的代碼行得到這個ID:

String key = ref.push().getKey();