Chat uygulamasında boş mesaj atma problemi
31.10.2019 - 02:04
Bir chat uygulaması geliştiriyorum KOTLİN dilinde olan bu uygulamada malesef hçbirşey yazmasamda göndere tıkladığımda boş mesaj atıyor bunun çözümü hakkında yardımcı olabilecek birileri varsa çok memnun olurum bu konu hakkında bir türlü sonuca ulaşamadım belki çok kolay bir yolu vardır ama kafam durmuş durumda fikirlerinize açığım istendiği taktirde kodları da paylaşabilirim şimdiden vakit ayıran herkese teşekkürler...
Kotlin dilindeki kod parcacığını paylaştım burada uygulamaya çalışıyorum
class ChatLogActivity : AppCompatActivity() {
companion object {
val TAG = "ChatLog"
}
val adapter = GroupAdapter<GroupieViewHolder>()
var toUser: User? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_chat_log)
recyclerview_chat_log.adapter = adapter
toUser = intent.getParcelableExtra<User>(NewMessageActivity.USER_KEY)
supportActionBar?.title = toUser?.username
// setupDummyData()
listenForMessages()
send_button_chat_log.setOnClickListener {
Log.d(TAG, "Attempt to send message....")
performSendMessage()
}
}
private fun listenForMessages() {
val fromId = FirebaseAuth.getInstance().uid
val toId = toUser?.uid
val ref = FirebaseDatabase.getInstance().getReference("/user-messages/$fromId/$toId")
ref.addChildEventListener(object: ChildEventListener {
override fun onChildAdded(p0: DataSnapshot, p1: String?) {
val chatMessage = p0.getValue(ChatMessage::class.java)
if (chatMessage != null) {
Log.d(TAG, chatMessage.text)
if (chatMessage.fromId == FirebaseAuth.getInstance().uid) {
val currentUser = LatestMessagesActivity.currentUser ?: return
adapter.add(ChatFromItem(chatMessage.text, currentUser))
} else {
adapter.add(ChatToItem(chatMessage.text, toUser!!))
}
}
recyclerview_chat_log.scrollToPosition(adapter.itemCount - 1)
}
override fun onCancelled(p0: DatabaseError) {
}
override fun onChildChanged(p0: DataSnapshot, p1: String?) {
}
override fun onChildMoved(p0: DataSnapshot, p1: String?) {
}
override fun onChildRemoved(p0: DataSnapshot) {
}
})
}
private fun performSendMessage() {
// how do we actually send a message to firebase...
val text = edittext_chat_log.text.toString()
val fromId = FirebaseAuth.getInstance().uid
val user = intent.getParcelableExtra<User>(NewMessageActivity.USER_KEY)
val toId = user.uid
if (fromId == null) return
// val reference = FirebaseDatabase.getInstance().getReference("/messages").push()
val reference = FirebaseDatabase.getInstance().getReference("/user-messages/$fromId/$toId").push()
val toReference = FirebaseDatabase.getInstance().getReference("/user-messages/$toId/$fromId").push()
val chatMessage = ChatMessage(reference.key!!, text, fromId, toId, System.currentTimeMillis() / 1000)
reference.setValue(chatMessage)
.addOnSuccessListener {
Log.d(TAG, "Saved our chat message: ${reference.key}")
edittext_chat_log.text.clear()
recyclerview_chat_log.scrollToPosition(adapter.itemCount - 1)
}
toReference.setValue(chatMessage)
val latestMessageRef = FirebaseDatabase.getInstance().getReference("/latest-messages/$fromId/$toId")
latestMessageRef.setValue(chatMessage)
val latestMessageToRef = FirebaseDatabase.getInstance().getReference("/latest-messages/$toId/$fromId")
latestMessageToRef.setValue(chatMessage)
}
}
43
Görüntülenme
0 Beğeni