如何在Firebase中获取用户数作为计数在android TextView中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Firebase中获取用户数作为计数在android TextView中相关的知识,希望对你有一定的参考价值。

根据图片,数据库有一个用户,因此它应该在loginactivity角落的textview中给出1号,根据新用户条目它应该增加

答案

尝试以下代码,如果您希望计数每次都增加,当数据库中的新用户输入时,最好使用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) {

        }
    });
另一答案

试试这个。使用这个我的答案是1名学生。但我只读了一次。如果我添加其他学生,则在活动更新之前,计数器不会更改。

  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) {

        }
    });

使用最后一个代码,当我进入一个新学生时,我的计数器将立即更改,如果我删除了一个学生,我的计数器也会立即改变。

以上是关于如何在Firebase中获取用户数作为计数在android TextView中的主要内容,如果未能解决你的问题,请参考以下文章

Flutter Firebase 儿童计数

将 Firebase 文档计数作为表行计数返回

如何使用firebase作为数据库在android中获取附近的用户名?

通过 Firebase 分析获取非活动用户的百分比

Firebase 总用户数

如何在 Flutter 中从 Firebase Auth 获取用户 ID?