如何在推送Firebase android后显示该值?

时间:2018-04-18 18:35:17

标签: java android firebase firebase-realtime-database

我目前正在研究我的最终项目,我对如何从我的firebase显示价值(费用)感到困惑,因为我正在使用推送,

So this is my database

这是我在数据库中添加它的代码

    DatabaseReference itemsRef = mRef.child("Users/" + 
    mAuth.getCurrentUser().getUid()).push();
    itemsRef.child("expenses").setValue(total);

    EditText itemedit = findViewById(R.id.macam1);
    macam1 = itemedit.getText().toString();
    itemsRef.child("items/").setValue(macam1 + ": " + item01);

    EditText itemedit2 = findViewById(R.id.macam2);
    macam2 = itemedit2.getText().toString();
    itemsRef.child("items2/").setValue(macam2 + ": " + item02);

我的User.class

public class User {
    private  String name;
    private int balance,expenses;

    public  User(){

    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getBalance() {
        return balance;
    }

    public void setBalance(int balance) {
        this.balance = balance;
    }


    public void setExpenses(int expenses) {
        this.expenses = expenses;
    }

    public int getExpenses() {
        return expenses;
    }

}

到目前为止这是代码:

DatabaseReference mRef = FirebaseDatabase.getInstance().getReference("Users");
final String key =  mRef.push().getKey();
String userid=user.getUid();
DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("Users").child(userid).child(key);
ref.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {

            int expense = (int) dataSnapshot.child("expenses").getValue();
            TextView view = (TextView) findViewById(R.id.totalExpense);
            view.setText("" + expense);

    }

    @Override
    public void onCancelled(DatabaseError error) {

    }
});

ref已经给出了randomid的值,但仍然出现错误 int expense = (int) dataSnapshot.child("expenses").getValue();

1 个答案:

答案 0 :(得分:0)

要从数据库中检索费用,请尝试以下操作:

FirebaseUser user=FirebaseAuth.getInstance().getCurrentUser();
String userid=user.getUid();
DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("Users").child(userid);
ref.addValueEventListener(new ValueEventListener() {
 @Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot datas: dataSnapshot.getChildren()){
  String expenses=datas.child("expenses").getValue().toString();

  }
}

@Override
public void onCancelled(DatabaseError error) {

  }
});

在您的数据库中,您有Users/userid/randomid/key:value。因此,让数据快照位于randomid内的userid然后循环,以便能够检索子expenses