@Override public boolean onContextItemSelected(MenuItem item) { boolean handled = false; boolean deleteMessage = false; if (item.getItemId() == R.id.delete_message) { deleteMessage = true; handled = true; } else if (item.getItemId() == R.id.delete_conversation) { deleteMessage = false; handled = true; } EMConversation tobeDeleteCons = adapter.getItem(((AdapterContextMenuInfo) item.getMenuInfo()).position); // 删除此会话 EMChatManager.getInstance() .deleteConversation(tobeDeleteCons.getUserName(), tobeDeleteCons.isGroup(), deleteMessage); InviteMessgeDao inviteMessgeDao = new InviteMessgeDao(getActivity()); inviteMessgeDao.deleteMessage(tobeDeleteCons.getUserName()); adapter.remove(tobeDeleteCons); adapter.notifyDataSetChanged(); // 更新消息未读数 ((MainActivity) getActivity()).updateUnreadLabel(); return handled ? true : super.onContextItemSelected(item); }
@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); } } } } }
@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; }