首页 > 解决方案 > android kotlin-firebase(关注者的 nb 和关注者的 nb 未显示在设置活动中)

问题描述

首先,我有一个设置 activity.kt,用于显示每个在线用户的关注者数量和关注者数量。我还有一个名为 searchFragment.kt 的片段,其中包含应用程序中的所有用户,其中每个用户都是一个相对布局。此片段调用 usersAdapter 类以在回收站视图中显示用户,并带有一个关注按钮,当在线用户转向关注跟随另一个随机用户

这是 UsersAdpater 类中 OnBindViewHolder() 方法的代码:

 override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        val users = mUsers[position]
        holder.usernameResources.text = users!!.getUsername()
        Picasso.get().load(users.getProfile()).placeholder(R.drawable.username).into(holder.profile)
        holder.lastMessageTxt.text = users.getBio()
        mAuth = FirebaseAuth.getInstance()
        firebaseUserId = mAuth.currentUser!!.uid
       
        holder.profile.setOnClickListener {
            val intent = Intent(mContext, ViewFullImage::class.java)
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK)
            intent.putExtra("VisitUserId", users.getUid())
            mContext.startActivity(intent)

        }
        holder.followbutton.setOnClickListener {
            if (holder.followbutton.text == "Follow") {
                val followingRef =
                    FirebaseDatabase.getInstance("https://online-chat-541f3-default-rtdb.firebaseio.com")
                        .reference.child("Follow").child(firebaseUserId).child("Following")
                        .child(users.getUid()!!).setValue(true)
                        .addOnCompleteListener { task ->
                            if (task.isSuccessful) {
                                val followerRef =
                                    FirebaseDatabase.getInstance("https://online-chat-541f3-default-rtdb.firebaseio.com")
                                        .reference.child("Follow").child(users.getUid()!!)
                                        .child("Followers").child(firebaseUserId).setValue(true)

                            }
                        }

            } else {
                val followingRef =
                    FirebaseDatabase.getInstance("https://online-chat-541f3-default-rtdb.firebaseio.com")
                        .reference.child("Follow").child(firebaseUserId).child("Following")
                        .child(users.getUid()!!).removeValue()
                        .addOnCompleteListener { task ->
                            if (task.isSuccessful) {
                                val followerRef =
                                    FirebaseDatabase.getInstance("https://online-chat-541f3-default-rtdb.firebaseio.com")
                                        .reference.child("Follow").child(users.getUid()!!)
                                        .child("Followers").child(firebaseUserId).removeValue()


                            }
                        }

            }
        }

这段代码运行得很好,它在 firebase 数据库中创建了引用以及后续和后续过程

但问题出在 settings.kt 文件中,我想在其中显示关注者和关注者的 nb 这是 settings.kt 代码有什么问题?settings.kt 代码:

private var firebaseUserId:String=""
mAuth=FirebaseAuth.getInstance()
 firebaseUserId=mAuth.currentUser!!.uid
private fun getFollowing() {
            val followingRef =
                FirebaseDatabase.getInstance("https://online-chat-541f3-default-rtdb.firebaseio.com").reference.child("Follow").child(firebaseUserId).child("Following")

            followingRef.addValueEventListener(object : ValueEventListener {
                override fun onDataChange(p0: DataSnapshot) {
                    if(p0.exists()){
                        following_number.text=p0.childrenCount.toString()
                    }

                }

                override fun onCancelled(p0: DatabaseError) {

                }
            })

    }

    private fun getFollowers() {
            val followersRef = FirebaseDatabase.getInstance("https://online-chat-541f3-default-rtdb.firebaseio.com").reference.child("Follow").child(firebaseUserId).child("Followers")

            followersRef.addValueEventListener(object : ValueEventListener {
                override fun onDataChange(p0: DataSnapshot) {
                    if(p0.exists()){
                        followers_number.text=p0.childrenCount.toString()
                    }

                }

                override fun onCancelled(p0: DatabaseError) {

                }
            })

    }

注意:followers_number 是一个文本视图,默认为 0,显示关注者的 nb

标签: androidfirebasekotlin

解决方案


试试这个查询

   private lateinit var followersRef: DatabaseReference;
   followersRef = Firebase.database.reference.child("Follow").child(firebaseUserId).child("Followers");

   val listener = object : ValueEventListener {
        override fun onDataChange(dataSnapshot: DataSnapshot) {

        }

        override fun onCancelled(databaseError: DatabaseError) {

        }
    }
    followersRef.addValueEventListener(listener);

推荐阅读