Android 在使用Firebase的所有用户的RecyclerVIew中显示好友列表
我将所有用户信息与他们的UID一起作为文档存储在firestore中。现在,我在realtimeDatabase中创建了一个节点作为好友,UID作为子节点。现在我只想检索UID出现在Friends节点中但用户未显示在recyclerView中的用户,或者我不知道正确的方法 保存所有用户信息的Firestore 这就是在操作中创建节点好友的方式Android 在使用Firebase的所有用户的RecyclerVIew中显示好友列表,android,kotlin,firebase-realtime-database,android-recyclerview,google-cloud-firestore,Android,Kotlin,Firebase Realtime Database,Android Recyclerview,Google Cloud Firestore,我将所有用户信息与他们的UID一起作为文档存储在firestore中。现在,我在realtimeDatabase中创建了一个节点作为好友,UID作为子节点。现在我只想检索UID出现在Friends节点中但用户未显示在recyclerView中的用户,或者我不知道正确的方法 保存所有用户信息的Firestore 这就是在操作中创建节点好友的方式 FirebaseDatabase.getInstance().reference .child("F
FirebaseDatabase.getInstance().reference
.child("Friends")
.child(currentUserID)
.child(profileId)
.setValue("Friend")
.addOnSuccessListener{
FirebaseDatabase.getInstance().reference
.child("Friends")
.child(profileId)
.child(currentUserID)
.setValue("Friend")}
这就是我如何根据实时数据库在一个片段中的recyclerView中检索它们
private fun retrieveFriends()
{
val usersRef = FirebaseDatabase.getInstance().reference.child("Friends")
usersRef.addValueEventListener(object : ValueEventListener
{
override fun onDataChange(dataSnapshot: DataSnapshot)
{
mFriend?.clear()
for (snapshot in dataSnapshot.children)
{
val friend = snapshot.getValue(User::class.java)
if (friend != null)
{
mFriend?.add(friend)
}
friendAdapter?.notifyDataSetChanged()
}
}
})
}
在userAdapter中,设置如下值
private fun friendInfo(fullName: TextView, about: TextView, location: TextView, profileImage: CircleImageView) {
val pref = mContext.getSharedPreferences("PREF", Context.MODE_PRIVATE)
if (pref != null) {
this.profileId = pref.getString("profileId", "none").toString()
}
val userRef = FirebaseFirestore.getInstance().collection("Users").document(profileId)
userRef.get()
.addOnSuccessListener { documentSnapshot ->
if (documentSnapshot != null && documentSnapshot.exists()) {
val user = documentSnapshot.toObject(User::class.java)
Picasso.get().load(user!!.getImage()).placeholder(R.drawable.default_pro_pic).into(profileImage)
fullName.text = user.getFullName()
about.text = user.getAbout()
location.text = user.getLocation()
}
}
}
在从中检索用户时,您必须进行更改,从中检索具有uid的用户,但如果您认为用户的所有信息也将显示,那么这将永远不会发生,因为您刚刚将uid保存为firebase中的值,请尝试以下操作
private fun retrieveFriends()
{
val usersRef = FirebaseDatabase.getInstance().reference.child("Friends")
usersRef.addValueEventListener(object : ValueEventListener
{
override fun onDataChange(dataSnapshot: DataSnapshot)
{
mFriend?.clear()
val friend = snapshot.getValue(User::class.java)
for each{
val friendID = it.key
mFriend?.add(User(userId = friendID)
}
friendAdapter?.notifyDataSetChanged()
}
})
}
现在,您只需在您的用户模型类中使用单个userId参数创建另一个构造函数
constructor(userId : String)
{
this.userId = userId
}
您可以查看Alex Mamo对“如何将数据从Firebase检索到我的适配器”的回复中的一个相关和详细的示例。没有用处,这是另一个问题。您可以选择从GitHub这样的解决方案中获益,例如。