2016-12-22 7 views

Antwort

1

Sie haben Zuhörer einstellen, nach dem privateChat.sendMessage (chatMessage); Wenn Sie Erfolg in Listenern erhalten, rufen Sie notifydatasetchange Methode des Adapters auf.

private void sendMessage() { 
//  privateChatManager = chatService.getPrivateChatManager(); 
     Log.d("PRIVATE", ">>>>> " + privateChatManager); 
     Log.d("INST", ">>>>> " + QBChatService.getInstance()); 
     Log.d("CHAT ", "" + chatService); 
     Log.d("PRI", ">>>>> " + QBChatService.getInstance().getPrivateChatManager()); 

     //login to chat firstly 
     if (messageEdt.length() > 0) { 
      privateChatMessageListener = new QBMessageListener<QBPrivateChat>() { 
       @Override 
       public void processMessage(QBPrivateChat privateChat, final QBChatMessage chatMessage) { 
        Log.e("privateChat ", " " + privateChat); 
        Log.e("chatMessage", "" + chatMessage); 
        chatListAdapter.notifyDataSetChanged(); 
       } 

       @Override 
       public void processError(QBPrivateChat privateChat, QBChatException error, QBChatMessage originMessage) { 
        Log.e("privateChat ", " " + privateChat); 
        Log.e("QBChatMessage", "" + originMessage); 
        Log.e("error", "" + error); 
       } 
      }; 

      privateChatManagerListener = new QBPrivateChatManagerListener() { 
       @Override 
       public void chatCreated(final QBPrivateChat privateChat, final boolean createdLocally) { 
        if (!createdLocally) { 
         privateChat.addMessageListener(privateChatMessageListener); 
        } 
       } 
      }; 

ChattingFragment.chatService.getPrivateChatManager().addPrivateChatManagerListener(privateChatManagerListener); 
      try { 
       QBChatMessage chatMessage = new QBChatMessage(); 
       chatMessage.setBody(messageEdt.getText().toString()); 
       chatMessage.setProperty("save_to_history", "1"); // Save a message to history 
       chatMessage.setProperty("notification_type", "1"); 
       chatMessage.setSenderId(Integer.parseInt(Util.ReadSharePrefrence(getApplicationContext(), Constant.SHRED_PR.KEY_QB_USERID))); 
       chatMessage.setRecipientId(opponentId); 
       chatMessage.setMarkable(true); 
       privateChatManager = QBChatService.getInstance().getPrivateChatManager(); 
       QBPrivateChat privateChat = privateChatManager.getChat(opponentId); 
       if (privateChat == null) { 
        privateChat = privateChatManager.createChat(opponentId, privateChatMessageListener); 
       } 
       // send message 
       privateChat.sendMessage(chatMessage); 
       privateChat.addMessageSentListener(privateChatMessageSentListener); 
       privateChat.addMessageListener(privateChatMessageListener); 


      } catch (SmackException.NotConnectedException e) { 
       Toast.makeText(PrivateChat.this, "Exception " + e, Toast.LENGTH_SHORT).show(); 
      } 
     } 
    } 


    private QBMessageSentListener<QBPrivateChat> privateChatMessageSentListener = new QBMessageSentListener<QBPrivateChat>() { 
     @Override 
     public void processMessageSent(QBPrivateChat qbChat, QBChatMessage qbChatMessage) { 
      Log.d("MEHUL", "M " + qbChat); 
      Log.d("MSG", "MSG " + qbChatMessage); 
      hashmap = new HashMap<String, String>(); 
      hashmap.put("id", "" + qbChatMessage.getId()); 
      if (qbChatMessage.getBody() != null) { 
       hashmap.put("msg", "" + qbChatMessage.getBody()); 
      } else { 
       hashmap.put("msg", ""); 
      } 
      hashmap.put("recipient_id", "" + opponentId); 
      hashmap.put("sender_id", "" + user_id); 

      Collection<QBAttachment> collection = qbChatMessage.getAttachments(); 
      if (collection != null && collection.size() > 0) { 
       for (QBAttachment attachment : collection) { 
        String imageid = attachment.getId(); 
        String RecivedUrl = attachment.getUrl(); 
        hashmap.put("url", "" + RecivedUrl); 
       } 
       //Here is the AsyncTask where I am trying to download image 
       // 
      } 

      String currentDateTimeString = DateFormat.getDateTimeInstance().format(new Date()); 

      // textView is the TextView view that should display it 
      hashmap.put("updated_at", "" + currentDateTimeString); 
      chatArraylist.add(hashmap); 

      Toast.makeText(getApplicationContext(), "Message Sent Successfully", Toast.LENGTH_SHORT).show(); 
      messageEdt.setText(""); 

      chatListAdapter = new PrivateChatMsgListAdapter(getApplicationContext(), chatArraylist); 
      lvChatDetails.setAdapter(chatListAdapter); 
      lvChatDetails.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL); 
      lvChatDetails.setStackFromBottom(true); 
      chatListAdapter.notifyDataSetChanged(); 
      scrollMyListViewToBottom(); 
     } 

     @Override 
     public void processMessageFailed(QBPrivateChat qbChat, QBChatMessage qbChatMessage) { 
      Log.d("MEHUL", "M " + qbChat); 
      Log.d("MSG", "ERR " + qbChatMessage); 
     } 
    }; 
Verwandte Themen