【发布时间】:2022-03-13 15:56:54
【问题描述】:
我正在制作一个信使应用程序,我正在使用 firebase 作为我的数据库,并且我正在使用 MVVM 模式。
我想检查用户是否有新的未读消息,并显示发送者附近的消息数。
所以在 MainActivity 中有一个 RecyclerView 填充了用户。 这是用户模型(https://ibb.co/w72K17m)。
我有一个“seen”键,这意味着用户还没有阅读消息,此外,我还有一个包含当前用户 UID 的“reciever”。使用这些值,我尝试执行以下操作:
chatRef.addValueEventListener(object : ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
val messageArray = ArrayList<String?>()
val usersArray = ArrayList<String?>()
for (snapshot2 in snapshot.children) {
val chat = snapshot2.getValue(Message::class.java) // Getting all the messages with values, like the photo.
if (chat!!.receiver.equals(currentUser.value!!.uid)) { // Check if the current user is the reciever
if (chat.seen == false){ // Check if the message is seen
messageArray.add(chat.message)
usersArray.add(chat.sender)
}
}
}
Log.e("Chat","messageArray: $messageArray")
Log.e("Chat","usersArray: $usersArray")
}
override fun onCancelled(error: DatabaseError) {
TODO("Not yet implemented")
}
})
这是输出:
messageArray: [message1, message2 , message3, message4, message5 , message6]
usersArray: [4RDojKDSJZUOfpNky9MxuLHQJN63, 4RDojKDSJZUOfpNky9MxuLHQJN63, iromTJzrZCQVJnjcLhhdUjXi5bP2, iromTJzrZCQVJnjcLhhdUjXi5bP2, iromTJzrZCQVJnjcLhhdUjXi5bP2, iromTJzrZCQVJnjcLhhdUjXi5bP2]
我收到了所有的消息和发送给我的所有用户,但我不知道如何查看每个 ID 发送了多少条消息。
我尝试使用 hashMap 但没有成功..
【问题讨论】:
-
您是否将 UID 存储在 Message 对象中?
-
@AlexMamo 是的,两个用户的 UID
-
那为什么不简单地检查消息中的 UID 呢?通过这种方式,您将始终知道有多少消息属于特定用户。
标签: android kotlin for-loop firebase-realtime-database arraylist