我目前正在研究我的最终项目,我对如何从我的firebase显示价值(费用)感到困惑,因为我正在使用推送,
这是我在数据库中添加它的代码
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();
答案 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