我试图在用户点击按钮时只更新一个字段
这是database
我需要在用户点击按钮时更新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) {
}
});
}
});
答案 0 :(得分:2)
为了更新Firebase数据库中的值,无需附加侦听器,只有在需要读取数据时才需要该侦听器。因此,要更新特定节点,您只需要在setValue()
对象上直接使用databaseReference
方法。
因此,假设type
节点是Firebase数据库的直接子节点,请使用以下代码行:
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();
答案 1 :(得分: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);
}
});