根据图片,数据库有一个用户,因此应根据新用户条目的增加,在loginactivity的角落的文本视图中给数字1。
答案 0 :(得分:3)
尝试一下。使用此答案,我是一名学生。但是我只读一次。如果我添加其他学生,则在活动更新之前计数器不会改变。
TextView yourTextView = (TextView) findViewById(R.id.yourTextView);
Database database = FirebaseDatabase.getInstance();
DatabaseReference studentsRef = database.getReference("student");
studentsRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
int counter = (int) dataSnapshot.getChildrenCount();
//Convert counter to string
String userCounter = String.valueOf(counter);
//Showing the user counter in the textview
yourTextView.setText(userCounter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
但是,如果您想拥有实时计数器,则应像这样将addListenerForSingleValueEvent更改为addValueEventListener ...
studentsRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
int counter = (int) dataSnapshot.getChildrenCount();
//Convert counter to string
String userCounter = String.valueOf(counter);
//Showing the user counter in the textview
yourTextView.setText(userCounter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
输入新学生时使用的最后一个密码,我的计数器将立即更改,如果删除学生,我的计数器也将立即更改。
答案 1 :(得分:0)
尝试下面的代码,如果您希望每次增加计数,那么当新用户输入数据库时,最好使用ChildEventListener
。
int studentCounter = 0;// declare int variable
TextView tv_counter = (TextView) findViewById(R.id.tv_counter);
DatabaseReference mDatabaseReference = FirebaseDatabase.getInstance().getReference().child("student");
mDatabaseReference.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
studentCounter = studentCounter + 1;
//Convert counter to string
String strCounter = String.valueOf(studentCounter);
//Showing the user counter in the textview
tv_counter.setText(strCounter);
}
@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) {
}
});