【发布时间】:2022-01-10 23:35:38
【问题描述】:
我正在开发一款 Firebase 聊天应用。我想为此维护两个不同用户之间的聊天我正在创建一个父节点作为 +923478302658@Chat 并在其中创建一个子节点作为 +923478302658-+923065015216在其中为两个参与者提供消息。
这是我的聊天模型:
class AllChatsModel {
var chatID: String? = null
var chatStarterName: String? = null
var chatRecieverName: String? = null
var chatStartTD: String? = null
var chatLastMessage: String? = null
var chatLastMsgTime: String? = null
var chatHeadActive: Boolean? = null
var chatMessages: ArrayList<MessageModel>? = null
}
这里是发送消息的函数:
private fun sendMessage(message: String) {
val dateFormat = SimpleDateFormat("dd MMMM, yyyy 'at' HH:mm aaa")
val calendar = Calendar.getInstance()
val currentTime: String = dateFormat.format(calendar.time)
val chatID = databaseReference!!.push().key
val chatModel = AllChatsModel()
chatModel.chatStarterName = (sharedPreference?.userName)
chatModel.chatRecieverName = signUpEntity?.userUID
chatModel.chatStartTD = currentTime
chatModel.chatLastMessage = message
chatModel.chatLastMsgTime = currentTime
val chatMessagesList: ArrayList<MessageModel>? = chatModel?.chatMessages // debugs gives null here
val messageID = databaseReference!!.push().key
val messageModel = MessageModel()
messageModel.messageID = messageID
messageModel.messageText = message
messageModel.messageTime = currentTime
messageModel.msgSenderID = FirebaseAuth.getInstance().uid
messageModel.msgSenderName = (sharedPreference?.userName)
messageModel.msgSenderNo = (currentUserNo)
messageModel.msgReceiverID = signUpEntity?.userUID
messageModel.msgReceiverName = signUpEntity?.userName
messageModel.msgReceiverNo = signUpEntity?.userPhone
chatMessagesList?.add(messageModel) // here chatMessagesList is null
chatModel.chatMessages = chatMessagesList
FirebaseDatabase.getInstance().reference.child("${currentUserNo}@Chat")
.child("${currentUserNo}-${signUpEntity?.userPhone}")
.child("ChatMessages").setValue(chatModel)
txtInputMsg.setText("")
}
我想获得这样的 firebase 节点结构,但应用程序崩溃了。为什么我没有在附图中得到这样的数据。 [1]:https://i.stack.imgur.com/QOW8c.png
【问题讨论】:
-
请仅使用
android-studio标签来回答有关 Android Studio IDE 本身的问题。对于一般的 Android 编程问题,请使用android标签。
标签: android kotlin firebase-realtime-database arraylist