예제 #1
0
 /**
  * 根据消息内容和消息类型获取消息内容提示
  *
  * @param message
  * @param context
  * @return
  */
 private String getMessageDigest(EMMessage message, Context context) {
   String digest = "";
   switch (message.getType()) {
     case LOCATION: // 位置消息
       if (message.direct == EMMessage.Direct.RECEIVE) {
         digest = getStrng(context, R.string.location_recv);
         String name = message.getFrom();
         if (GloableParams.UserInfos != null) {
           User user = GloableParams.Users.get(message.getFrom());
           if (null != user.getUserName()) name = user.getUserName();
         }
         digest = String.format(digest, message.getFrom());
         return digest;
       } else {
         digest = getStrng(context, R.string.location_prefix);
       }
       break;
     case IMAGE: // 图片消息
       ImageMessageBody imageBody = (ImageMessageBody) message.getBody();
       digest = getStrng(context, R.string.picture) + imageBody.getFileName();
       break;
     case VOICE: // 语音消息
       digest = getStrng(context, R.string.voice_msg);
       break;
     case VIDEO: // 视频消息
       digest = getStrng(context, R.string.video);
       break;
     case TXT: // 文本消息
       if (!message.getBooleanAttribute(Constant.MESSAGE_ATTR_IS_VOICE_CALL, false)) {
         TextMessageBody txtBody = (TextMessageBody) message.getBody();
         digest = txtBody.getMessage();
       } else {
         TextMessageBody txtBody = (TextMessageBody) message.getBody();
         digest = getStrng(context, R.string.voice_call) + txtBody.getMessage();
       }
       break;
     case FILE: // 普通文件消息
       digest = getStrng(context, R.string.file);
       break;
     default:
       System.err.println("error, unknow type");
       return "";
   }
   return digest;
 }
예제 #2
0
 @Override
 public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
   if (adpter.PublicMsg != null && position == 0) {
     // 打开订阅号列表页面
     Utils.start_Activity(getActivity(), PublishMsgListActivity.class);
   } else {
     parentActivity.updateUnreadLabel();
     EMConversation conversation = conversationList.get(position);
     Intent intent = new Intent(getActivity(), ChatActivity.class);
     Hashtable<String, String> ChatRecord = adpter.getChatRecord();
     if (ChatRecord != null) {
       if (conversation.isGroup()) {
         GroupInfo info = GloableParams.GroupInfos.get(conversation.getUserName());
         if (info != null) {
           intent.putExtra(Constants.TYPE, ChatActivity.CHATTYPE_GROUP);
           intent.putExtra(Constants.GROUP_ID, info.getGroup_id());
           intent.putExtra(Constants.NAME, info.getGroup_name()); // 设置标题
           getActivity().startActivity(intent);
         } else {
           intent.putExtra(Constants.TYPE, ChatActivity.CHATTYPE_GROUP);
           intent.putExtra(Constants.GROUP_ID, info.getGroup_id());
           intent.putExtra(Constants.NAME, "群聊"); // 设置标题
           getActivity().startActivity(intent);
         }
       } else {
         User user = GloableParams.Users.get(conversation.getUserName());
         if (user != null) {
           intent.putExtra(Constants.NAME, user.getUserName()); // 设置昵称
           intent.putExtra(Constants.TYPE, ChatActivity.CHATTYPE_SINGLE);
           intent.putExtra(Constants.User_ID, conversation.getUserName());
           getActivity().startActivity(intent);
         } else {
           intent.putExtra(Constants.NAME, "好友");
           intent.putExtra(Constants.TYPE, ChatActivity.CHATTYPE_SINGLE);
           intent.putExtra(Constants.User_ID, conversation.getUserName());
           getActivity().startActivity(intent);
         }
       }
     }
   }
 }
예제 #3
0
  @Override
  public View getView(final int position, View convertView, ViewGroup parent) {
    if (convertView == null) {
      convertView = LayoutInflater.from(context).inflate(R.layout.layout_item_msg, parent, false);
    }
    ImageView img_avar = ViewHolder.get(convertView, R.id.contactitem_avatar_iv);
    TextView txt_name = ViewHolder.get(convertView, R.id.txt_name);
    TextView txt_state = ViewHolder.get(convertView, R.id.txt_state);
    TextView txt_del = ViewHolder.get(convertView, R.id.txt_del);
    TextView txt_content = ViewHolder.get(convertView, R.id.txt_content);
    TextView txt_time = ViewHolder.get(convertView, R.id.txt_time);
    TextView unreadLabel = ViewHolder.get(convertView, R.id.unread_msg_number);
    SwipeLayout swipe = ViewHolder.get(convertView, R.id.swipe);
    if (PublicMsg != null && position == 0) {
      txt_name.setText("订阅号");
      img_avar.setImageResource(R.drawable.icon_public);
      txt_time.setText(PublicMsg.getTime());
      txt_content.setText(PublicMsg.getContent());
      unreadLabel.setText("3");
      unreadLabel.setVisibility(View.VISIBLE);
      swipe.setSwipeEnabled(false);
    } else {
      swipe.setSwipeEnabled(true);
      // 获取与此用户/群组的会话
      final EMConversation conversation = conversationList.get(position);
      // 获取用户username或者群组groupid
      ChatID = conversation.getUserName();
      txt_del.setTag(ChatID);
      if (conversation.isGroup()) {
        GroupInfo info = GloableParams.GroupInfos.get(ChatID);
        if (info != null) {
          txt_name.setText(info.getGroup_name());
          img_avar.setImageResource(R.drawable.defult_group);
          // initGroupInfo(img_avar, txt_name);// 获取群组信息
        }
      } else {
        User user = GloableParams.Users.get(ChatID);
        if (user != null) {
          txt_name.setText(user.getUserName());
          // initUserInfo(img_avar, txt_name);// 获取用户信息
        }
      }
      if (conversation.getUnreadMsgCount() > 0) {
        // 显示与此用户的消息未读数
        unreadLabel.setText(String.valueOf(conversation.getUnreadMsgCount()));
        unreadLabel.setVisibility(View.VISIBLE);
      } else {
        unreadLabel.setVisibility(View.INVISIBLE);
      }
      if (conversation.getMsgCount() != 0) {
        // 把最后一条消息的内容作为item的message内容
        EMMessage lastMessage = conversation.getLastMessage();
        txt_content.setText(
            SmileUtils.getSmiledText(context, getMessageDigest(lastMessage, context)),
            BufferType.SPANNABLE);
        txt_time.setText(DateUtils.getTimestampString(new Date(lastMessage.getMsgTime())));
        if (lastMessage.status == EMMessage.Status.SUCCESS) {
          txt_state.setText("送达");
          // txt_state.setBackgroundResource(R.drawable.btn_bg_orgen);
        } else if (lastMessage.status == EMMessage.Status.FAIL) {
          txt_state.setText("失败");
          // txt_state.setBackgroundResource(R.drawable.btn_bg_red);
        } else if (lastMessage.direct == EMMessage.Direct.RECEIVE) {
          txt_state.setText("已读");
          txt_state.setBackgroundResource(R.drawable.btn_bg_blue);
        }
      }

      txt_del.setOnClickListener(
          new OnClickListener() {

            @Override
            public void onClick(View v) {
              deleteID = position;
              Tipdialog = new WarnTipDialog((Activity) context, "您确定要删除该聊天吗?");
              Tipdialog.setBtnOkLinstener(onclick);
              Tipdialog.show();
            }
          });
    }
    return convertView;
  }