Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从Firebase Android读取值并进行更新_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

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+“”)将数量转换为字符串,因为您在数据库中将数量保留为字符串。在共享的屏幕截图中,存储在数据库中的数量作为字符串存储,如值周围的引号所示。这是一个旧屏幕截图,在我对代码进行某些更改之前,我已替换它