Java 从Firebase Android读取值并进行更新
我想获取Java 从Firebase Android读取值并进行更新,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我想获取productQuantity值并更新它: private void updateValue() { try { newQuantity = Integer.parseInt(editTextQuantity.getText().toString()); } catch (NumberFormatException e) { editTextQuantity.setError("Enter Charger
productQuantity
值并更新它:
private void updateValue() {
try {
newQuantity = Integer.parseInt(editTextQuantity.getText().toString());
} catch (NumberFormatException e) {
editTextQuantity.setError("Enter Charger Quantity");
return;
}
DatabaseReference mReference = FirebaseDatabase.getInstance().getReference();
mReference.child("goods").child("charger").orderByChild("productQuantity").equalTo(quantity)
.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
dataSnapshot.getRef().setValue(newQuantity);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
我使用了
addChildEventListener
,但它对旧值的数量和新值的数量不起作用。让我们举个例子。假设我们想要得到productQuantity
属性设置为362
的产品,我们想要将其增加10。为此,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
Query query = rootRef.child("goods").child("charger").orderByChild("productQuantity").equalTo(362);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
int productQuantity = ds.child("productQuantity").getValue(Integer.class);
int newQuantity = productQuantity + 10;
ds.child("productQuantity").getRef().setValue(newQuantity);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
query.addListenerForSingleValueEvent(valueEventListener);
尝试:equalTo(quantity+“”)将数量转换为字符串,因为您在数据库中将数量保留为字符串。在共享的屏幕截图中,存储在数据库中的数量作为字符串存储,如值周围的引号所示。这是一个旧屏幕截图,在我对代码进行某些更改之前,我已替换它