首页 > 解决方案 > 向 Firebase 实时数据库中的现有整数数据添加值

问题描述

我有一个按钮可以更新数据库中的 int 数据值,但我想在 Firebase 实时数据库中的现有整数数据中添加一个值,而不仅仅是用另一个值替换它。

“points”的子节点中的当前整数值为 400。我想给它添加一个数字,然后更新它。例如,如果我添加 200,它将更新 firebase 内的数据,然后在那里显示 600。

如果有人能帮我解决这个问题,我将不胜感激?

当前 JSON 树

主要代码:

Button btnDone;
    DatabaseReference DBR;
    int z = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tapcard);

        btnDone = findViewById(R.id.buttonDone);
        DBR = FirebaseDatabase.getInstance().getReference().child("Member");

        btnDone.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                DBR.addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        int count = (int) dataSnapshot.getChildrenCount();
                        for (z = 1; z < count + 1; z++) {
                            DBR = FirebaseDatabase.getInstance().getReference().child("Member").child(String.valueOf(z));

                            DBR.addValueEventListener(new ValueEventListener() {
                                @Override
                                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                                    dataSnapshot.getRef().child("points").setValue(100);
                                }

                                @Override
                                public void onCancelled(@NonNull DatabaseError databaseError) {

                                }
                            });
                        }
                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {

                    }
                });

                Intent i = new Intent(TapCardActivity.this, HomeActivity.class);
                startActivity(i);
            }
        });
    }

奖励等级:

public class RewardsClass implements Serializable {
    private String Name;
    private String Description;
    private int img;
    private int points;

    public RewardsClass(String name, String description, int img, int points) {
        Name = name;
        Description = description;
        this.img = img;
        this.points = points;
    }

    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

    public String getDescription() {
        return Description;
    }

    public void setDescription(String description) {
        Description = description;
    }

    public int getImg() {
        return img;
    }

    public void setImg(int img) {
        this.img = img;
    }

    public int getPoints() {
        return points;
    }

    public void setPoints(int points) {
        this.points = points;
    }
}

标签: javaandroidfirebasefirebase-realtime-database

解决方案


向实时数据库中的属性添加值的最简单方法是使用(相当新的)increment()操作。

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference userRef = rootRef.child("Member").child(String.valueOf(z));
userRef.child("points").setValue(ServerValue.increment(200));

另见:


推荐阅读