Любая альтернатива показу сообщений чата в приложении android - PullRequest
0 голосов
/ 25 апреля 2020

это функция чата в моем приложении, но сообщения не появляются в моем приложении, хотя оно обновляется в FireBase. когда я жестко закодировал значения, это работает. это разговорная деятельность. Я также использовал фрагмент чата и адаптер. Но сообщения просто не публикуются в приложении. любые альтернативные решения или решение для этого было бы хорошо.

   private val firebaseDB = FirebaseFirestore.getInstance()
   private val userId = FirebaseAuth.getInstance().currentUser?.uid
   private val conversationAdapter = ConversationAdapter(arrayListOf(), userId)
   private var chatId: String? = null
   private var imageUrl: String? = null
   private var otherUserId: String? = null
   private var chatName: String? = null

   override fun onCreate(savedInstanceState: Bundle?) {
       super.onCreate(savedInstanceState)
       setContentView(R.layout.activity_conversation)

       chatId = intent.extras.getString(PARAM_CHAT_ID)
       imageUrl = intent.extras.getString(PARAM_IMAGE_URL)
       chatName = intent.extras.getString(chatName)
       otherUserId = intent.extras.getString(PARAM_OTHER_USER_ID)

        if (chatId.isNullOrEmpty() || userId.isNullOrEmpty()) {
            Toast.makeText(this, "chat room error", Toast.LENGTH_LONG).show()
            finish()
        }

        topNameTV.text = chatName
        populateImage(this, imageUrl, topPhotoIV, R.drawable.default_user)

        messagesRV.apply {
            setHasFixedSize(false)
            layoutManager = LinearLayoutManager(context)
            adapter = conversationAdapter
           }
         firebaseDB.collection(DATA_CHATS)
            .document(chatId!!)
            .collection(DATA_CHAT_MESSAGES)
           .orderBy(DATA_CHAT_MESSAGE_TIME)
           .addSnapshotListener{ querySnapshot, firebaseFirestoreException ->
                if(firebaseFirestoreException != null){
                    firebaseFirestoreException.printStackTrace()
                    return@addSnapshotListener
                  }else{
                       if (querySnapshot != null){
                        for(change in querySnapshot.documentChanges){
                            when(change.type){
                               DocumentChange.Type.ADDED -> {
                                   val message = change.document.toObject(Convo::class.java)
                                   if(message != null){
                                         conversationAdapter.addMessage(message)
                                         messagesRV.post {

   messagesRV.smoothScrollToPosition(conversationAdapter.itemCount -1)
                                       }
                                   }
                               }
                          }
                       }
                   }
               }
          }
    }
       fun onSend(v: View) {

        if (!messageET.text.isNullOrEmpty()){
           val message = Convo(userId, messageET.text.toString(), System.currentTimeMillis())
            firebaseDB.collection(DATA_CHATS).document(chatId!!)
                .collection(DATA_CHAT_MESSAGES)
                .document()
                .set(message)
            messageET.setText("",TextView.BufferType.EDITABLE)
             }

       }

       companion object {
          private val PARAM_CHAT_ID = "Chat id"
          private val PARAM_IMAGE_URL = "Image url"
          private val PARAM_OTHER_USER_ID = "Other user id"
          private val PARAM_CHAT_NAME = "Chat name"

          fun newIntent(context: Context?, chatId: String?, imageUrl: String?, otherUserId: String? 
         chatName: String?): Intent{
        val intent = Intent(context,ConversationActivity::class.java)
        intent.putExtra(PARAM_CHAT_ID,chatId)
        intent.putExtra(PARAM_IMAGE_URL, imageUrl)
        intent.putExtra(PARAM_OTHER_USER_ID, otherUserId)
        intent.putExtra(PARAM_CHAT_NAME, chatName)
        return intent
          }
        }
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...