Beispiel #1
0
 public void initModule() {
   UserInfo userInfo = JMessageClient.getMyInfo();
   mTitleBarTitle = (TextView) findViewById(R.id.title_bar_title);
   mTitleBarTitle.setText(mContext.getString(R.string.actionbar_me));
   mScrollView = (PullScrollView) findViewById(R.id.scroll_view);
   mContentLl = (LinearLayout) findViewById(R.id.content_list_ll);
   mAvatarIv = (ImageView) findViewById(R.id.my_avatar_iv);
   mTakePhotoBtn = (ImageButton) findViewById(R.id.take_photo_iv);
   mUserInfoRl = (RelativeLayout) findViewById(R.id.user_info_rl);
   mUserNameTv = (TextView) findViewById(R.id.user_name_tv);
   mSettingRl = (RelativeLayout) findViewById(R.id.setting_rl);
   mLogoutRl = (RelativeLayout) findViewById(R.id.logout_rl);
   mScrollView.setHeader(mAvatarIv);
   if (userInfo != null) {
     mUserNameTv.setText(userInfo.getUserName());
     File file = userInfo.getAvatar();
     if (file != null && file.isFile()) {
       Log.i("MeView", "file.getAbsolutePath() " + file.getAbsolutePath());
       DisplayMetrics dm = new DisplayMetrics();
       ((Activity) mContext).getWindowManager().getDefaultDisplay().getMetrics(dm);
       double density = dm.density;
       Bitmap bitmap =
           BitmapLoader.getBitmapFromFile(
               file.getAbsolutePath(), dm.widthPixels, (int) (density * 300));
       mAvatarIv.setImageBitmap(bitmap);
     } else mAvatarIv.setImageResource(R.drawable.friends_sends_pictures_no);
   }
 }
 private void handleGroupChangeMsg(Message msg, ViewHolder holder, TextView msgTime) {
   UserInfo myInfo = JMessageClient.getMyInfo();
   GroupInfo groupInfo = (GroupInfo) msg.getTargetInfo();
   String content = ((EventNotificationContent) msg.getContent()).getEventText();
   EventNotificationContent.EventNotificationType type =
       ((EventNotificationContent) msg.getContent()).getEventNotificationType();
   switch (type) {
     case group_member_added:
       holder.groupChange.setText(content);
       holder.groupChange.setVisibility(View.VISIBLE);
       break;
     case group_member_exit:
       holder.groupChange.setVisibility(View.GONE);
       msgTime.setVisibility(View.GONE);
       break;
     case group_member_removed:
       List<String> userNames = ((EventNotificationContent) msg.getContent()).getUserNames();
       // 被删除的人显示EventNotification
       if (userNames.contains(myInfo.getNickname()) || userNames.contains(myInfo.getUserName())) {
         holder.groupChange.setText(content);
         holder.groupChange.setVisibility(View.VISIBLE);
         // 群主亦显示
       } else if (myInfo.getUserName().equals(groupInfo.getGroupOwner())) {
         holder.groupChange.setText(content);
         holder.groupChange.setVisibility(View.VISIBLE);
       } else {
         holder.groupChange.setVisibility(View.GONE);
         msgTime.setVisibility(View.GONE);
       }
       break;
   }
 }
 public void setOnCheck(int position) {
   UserInfo userInfo = mMemberList.get(position);
   if (mSelectedList.contains(userInfo.getUserName())) {
     //            View view = getView(position, null, null);
     //            CheckBox checkBox = (CheckBox) view.findViewById(R.id.check_box_cb);
     //            checkBox.setChecked(false);
     mSelectedList.remove(position);
     mSelectMap.delete(position);
   } else {
     mSelectedList.add(userInfo.getUserName());
     mSelectMap.put(position, true);
   }
   notifyDataSetChanged();
 }
 @Override
 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
   UserInfo userInfo = mMemberList.get(position);
   String userName = userInfo.getUserName();
   Intent intent = new Intent();
   if (userName.equals(JMessageClient.getMyInfo().getUserName())) {
     intent.setClass(mContext, MeInfoActivity.class);
     mContext.startActivity(intent);
   } else {
     intent.setClass(mContext, FriendInfoActivity.class);
     intent.putExtra(JChatDemoApplication.TARGET_ID, userInfo.getUserName());
     intent.putExtra(JChatDemoApplication.GROUP_ID, mGroupId);
     mContext.startActivity(intent);
   }
 }
  public void setUserNickname(JSONArray data, CallbackContext callbackContext) {
    Log.i(TAG, "setUserNickname");
    try {
      String nickName = data.getString(0);
      Log.i(TAG, "setUserNickname" + nickName);

      UserInfo myUserInfo = JMessageClient.getMyInfo();
      myUserInfo.setNickname(nickName);
      this.setUserInfo(UserInfo.Field.nickname, myUserInfo, callbackContext);
      callbackContext.success("update userinfo ok");

    } catch (JSONException e) {
      e.printStackTrace();
      callbackContext.error("Error reading alias JSON");
    }
  }
  public void getAllSingleConversation(JSONArray data, CallbackContext callbackContext) {
    Log.i(TAG, "  getAllSingleConversation \n" + data);

    List<Conversation> list = JMessageClient.getConversationList();

    Log.i(TAG, "JMessageGetAllSingleConversation" + list.size());

    JSONArray jsonRusult = new JSONArray();

    for (int i = 0; i < list.size(); ++i) {
      Conversation conv = list.get(i);

      if (conv.getType() == ConversationType.single) {

        UserInfo info = (UserInfo) conv.getTargetInfo();
        Message msg = conv.getLatestMessage();
        String contentText = "";
        if (msg != null) {
          switch (msg.getContentType()) {
            case text:
              {
                contentText = ((TextContent) msg.getContent()).getText();
              }
              break;
            default:
              break;
          }
        }

        JSONObject jsonItem = new JSONObject();
        try {
          jsonItem.put("username", info.getUserName());
          jsonItem.put("nickname", info.getNickname());
          // jsonItem.put("avatar", info.getAvatar());
          jsonItem.put("lastMessage", contentText);
          jsonItem.put("unreadCount", conv.getUnReadMsgCnt());

          jsonRusult.put(jsonItem);

        } catch (JSONException e) {
          e.printStackTrace();
        }
      }
    }

    callbackContext.success(jsonRusult);
  }
 public void getUserInfo(JSONArray data, CallbackContext callbackContext) {
   Log.i(TAG, " getUserInfo \n" + data);
   UserInfo info = JMessageClient.getMyInfo();
   try {
     if (info != null && info.getUserName() != null) {
       JSONObject jsonItem = new JSONObject();
       jsonItem.put("username", info.getUserName());
       jsonItem.put("nickname", info.getNickname());
       jsonItem.put("gender", "unknow");
       callbackContext.success(jsonItem);
     } else {
       JSONObject jsonItem = new JSONObject();
       jsonItem.put("errorCode", 863004);
       jsonItem.put("errorDscription", "not found");
       callbackContext.error(jsonItem);
     }
   } catch (JSONException e) {
     e.printStackTrace();
   }
 }
  public void setUserGender(JSONArray data, CallbackContext callbackContext) {

    try {

      String genderString = data.getString(0);
      UserInfo.Gender gender = UserInfo.Gender.unknown;
      if (genderString.equals("male")) {
        gender = UserInfo.Gender.male;
      } else if (genderString.equals("female")) {
        gender = UserInfo.Gender.female;
      }

      UserInfo myUserInfo = JMessageClient.getMyInfo();
      myUserInfo.setGender(gender);
      this.setUserInfo(UserInfo.Field.gender, myUserInfo, callbackContext);

    } catch (JSONException e) {
      e.printStackTrace();
      callbackContext.error("Error reading alias JSON");
    }
  }
  private JSONObject getJSonFormMessage(Message msg) {
    String contentText = "";
    String msgType = ""; // 上传给js 层的类型,请和ios 保持一致

    switch (msg.getContentType()) {
      case text:
        contentText = ((TextContent) msg.getContent()).getText();
        msgType = "text";
        break;
      default:
        break;
    }
    Log.i(TAG, "msg " + contentText);

    JSONObject jsonItem = new JSONObject();
    try {
      MessageContent content = msg.getContent();
      UserInfo targetUser = (UserInfo) msg.getTargetInfo();
      UserInfo fromUser = (UserInfo) msg.getFromUser();

      jsonItem.put("target_type", "single");
      jsonItem.put("target_id", targetUser.getUserName());
      jsonItem.put("target_name", targetUser.getNickname());
      jsonItem.put("from_id", fromUser.getUserName());
      // jsonItem.put("from_name", fromUser.getNickname());
      jsonItem.put("from_name", msg.getFromName());
      jsonItem.put("create_time", msg.getCreateTime());
      jsonItem.put("msg_type", msgType);
      // jsonItem.put("text", contentText);

      JSONObject contentBody = new JSONObject();
      contentBody.put("text", contentText);
      jsonItem.put("msg_body", contentBody);

    } catch (JSONException e) {
      e.printStackTrace();
    }
    return jsonItem;
  }
 @Override
 public void onClick(View v) {
   switch (v.getId()) {
     case R.id.return_btn:
       mContext.setResultAndFinish();
       break;
     case R.id.nick_name_rl:
       mContext.startModifyNickNameActivity();
       break;
     case R.id.sex_rl:
       UserInfo userInfo = JMessageClient.getMyInfo();
       UserInfo.Gender gender = userInfo.getGender();
       mContext.showSexDialog(gender);
       break;
     case R.id.location_rl:
       mContext.startSelectAreaActivity();
       break;
     case R.id.sign_rl:
       mContext.startModifySignatureActivity();
       break;
   }
 }
 public MsgListAdapter(Context context, String targetId) {
   initData(context);
   this.mTargetId = targetId;
   this.mConv = JMessageClient.getSingleConversation(mTargetId);
   this.mMsgList = mConv.getMessagesFromNewest(0, mOffset);
   reverse(mMsgList);
   mStart = mOffset;
   UserInfo userInfo = (UserInfo) mConv.getTargetInfo();
   if (!TextUtils.isEmpty(userInfo.getAvatar())) {
     userInfo.getAvatarBitmap(
         new GetAvatarBitmapCallback() {
           @Override
           public void gotResult(int status, String desc, Bitmap bitmap) {
             if (status == 0) {
               notifyDataSetChanged();
             } else {
               HandleResponseCode.onHandle(mContext, status, false);
             }
           }
         });
   }
   checkSendingImgMsg();
 }
Beispiel #12
0
  /**
   * 接收消息类事件
   *
   * @param event 消息事件
   */
  public void onEvent(MessageEvent event) {
    final Message msg = event.getMessage();
    // 若为群聊相关事件,如添加、删除群成员
    Log.i(TAG, event.getMessage().toString());
    if (msg.getContentType() == ContentType.eventNotification) {
      GroupInfo groupInfo = (GroupInfo) msg.getTargetInfo();
      long groupID = groupInfo.getGroupID();
      UserInfo myInfo = JMessageClient.getMyInfo();
      EventNotificationContent.EventNotificationType type =
          ((EventNotificationContent) msg.getContent()).getEventNotificationType();
      if (groupID == mChatController.getGroupId()) {
        switch (type) {
          case group_member_added:
            // 添加群成员事件
            List<String> userNames = ((EventNotificationContent) msg.getContent()).getUserNames();
            // 群主把当前用户添加到群聊,则显示聊天详情按钮
            refreshGroupNum();
            if (userNames.contains(myInfo.getNickname())
                || userNames.contains(myInfo.getUserName())) {
              runOnUiThread(
                  new Runnable() {
                    @Override
                    public void run() {
                      mChatView.showRightBtn();
                    }
                  });
            }

            break;
          case group_member_removed:
            // 删除群成员事件
            userNames = ((EventNotificationContent) msg.getContent()).getUserNames();
            // 群主删除了当前用户,则隐藏聊天详情按钮
            if (userNames.contains(myInfo.getNickname())
                || userNames.contains(myInfo.getUserName())) {
              runOnUiThread(
                  new Runnable() {
                    @Override
                    public void run() {
                      mChatView.dismissRightBtn();
                      GroupInfo groupInfo =
                          (GroupInfo) mChatController.getConversation().getTargetInfo();
                      if (TextUtils.isEmpty(groupInfo.getGroupName())) {
                        mChatView.setChatTitle(ChatActivity.this.getString(R.string.group));
                      } else {
                        mChatView.setChatTitle(groupInfo.getGroupName());
                      }
                      mChatView.dismissGroupNum();
                    }
                  });
            } else {
              refreshGroupNum();
            }

            break;
          case group_member_exit:
            refreshGroupNum();
            break;
        }
      }
    }
    // 刷新消息
    runOnUiThread(
        new Runnable() {
          @Override
          public void run() {
            // 收到消息的类型为单聊
            if (msg.getTargetType().equals(ConversationType.single)) {
              String targetID = ((UserInfo) msg.getTargetInfo()).getUserName();
              // 判断消息是否在当前会话中
              if (!mChatController.isGroup() && targetID.equals(mChatController.getTargetId())) {
                Message lastMsg = mChatController.getAdapter().getLastMsg();
                if (lastMsg == null || msg.getId() != lastMsg.getId()) {
                  mChatController.getAdapter().addMsgToList(msg);
                } else {
                  mChatController.getAdapter().notifyDataSetChanged();
                }
              }
            } else {
              long groupID = ((GroupInfo) msg.getTargetInfo()).getGroupID();
              if (mChatController.isGroup() && groupID == mChatController.getGroupId()) {
                Message lastMsg = mChatController.getAdapter().getLastMsg();
                if (lastMsg == null || msg.getId() != lastMsg.getId()) {
                  mChatController.getAdapter().addMsgToList(msg);
                } else {
                  mChatController.getAdapter().notifyDataSetChanged();
                }
              }
            }
          }
        });
  }
  @Override
  public View getView(final int position, View convertView, ViewGroup parent) {
    final Message msg = mMsgList.get(position);
    final UserInfo userInfo = msg.getFromUser();
    final ViewHolder holder;
    if (convertView == null) {
      holder = new ViewHolder();
      convertView = createViewByType(msg, position);
      switch (msg.getContentType()) {
        case text:
          holder.headIcon = (CircleImageView) convertView.findViewById(R.id.avatar_iv);
          holder.displayName = (TextView) convertView.findViewById(R.id.display_name_tv);
          holder.txtContent = (TextView) convertView.findViewById(R.id.msg_content);
          holder.sendingIv = (ImageView) convertView.findViewById(R.id.sending_iv);
          holder.resend = (ImageButton) convertView.findViewById(R.id.fail_resend_ib);
          holder.groupChange = (TextView) convertView.findViewById(R.id.group_content);
          break;
        case image:
          holder.headIcon = (CircleImageView) convertView.findViewById(R.id.avatar_iv);
          holder.displayName = (TextView) convertView.findViewById(R.id.display_name_tv);
          holder.picture = (ImageView) convertView.findViewById(R.id.picture_iv);
          holder.sendingIv = (ImageView) convertView.findViewById(R.id.sending_iv);
          holder.progressTv = (TextView) convertView.findViewById((R.id.progress_tv));
          holder.resend = (ImageButton) convertView.findViewById(R.id.fail_resend_ib);
          break;
        case voice:
          holder.headIcon = (CircleImageView) convertView.findViewById(R.id.avatar_iv);
          holder.displayName = (TextView) convertView.findViewById(R.id.display_name_tv);
          holder.txtContent = (TextView) convertView.findViewById(R.id.msg_content);
          holder.voice = ((ImageView) convertView.findViewById(R.id.voice_iv));
          holder.sendingIv = (ImageView) convertView.findViewById(R.id.sending_iv);
          holder.voiceLength = (TextView) convertView.findViewById(R.id.voice_length_tv);
          holder.readStatus = (ImageView) convertView.findViewById(R.id.read_status_iv);
          holder.resend = (ImageButton) convertView.findViewById(R.id.fail_resend_ib);
          break;
        case location:
          holder.headIcon = (CircleImageView) convertView.findViewById(R.id.avatar_iv);
          holder.displayName = (TextView) convertView.findViewById(R.id.display_name_tv);
          holder.txtContent = (TextView) convertView.findViewById(R.id.msg_content);
          holder.sendingIv = (ImageView) convertView.findViewById(R.id.sending_iv);
          holder.resend = (ImageButton) convertView.findViewById(R.id.fail_resend_ib);
          break;
        case eventNotification:
          holder.groupChange = (TextView) convertView.findViewById(R.id.group_content);
          break;
        default:
          holder.groupChange = (TextView) convertView.findViewById(R.id.group_content);
      }
      convertView.setTag(holder);
    } else {
      holder = (ViewHolder) convertView.getTag();
    }

    // 显示时间
    TextView msgTime = (TextView) convertView.findViewById(R.id.send_time_txt);
    long nowDate = msg.getCreateTime();
    if (mOffset == 18) {
      if (position == 0 || position % 18 == 0) {
        TimeFormat timeFormat = new TimeFormat(mContext, nowDate);
        msgTime.setText(timeFormat.getDetailTime());
        msgTime.setVisibility(View.VISIBLE);
      } else {
        long lastDate = mMsgList.get(position - 1).getCreateTime();
        // 如果两条消息之间的间隔超过十分钟则显示时间
        if (nowDate - lastDate > 600000) {
          TimeFormat timeFormat = new TimeFormat(mContext, nowDate);
          msgTime.setText(timeFormat.getDetailTime());
          msgTime.setVisibility(View.VISIBLE);
        } else {
          msgTime.setVisibility(View.GONE);
        }
      }
    } else {
      if (position == 0 || position == mOffset || (position - mOffset) % 18 == 0) {
        TimeFormat timeFormat = new TimeFormat(mContext, nowDate);

        msgTime.setText(timeFormat.getDetailTime());
        msgTime.setVisibility(View.VISIBLE);
      } else {
        long lastDate = mMsgList.get(position - 1).getCreateTime();
        // 如果两条消息之间的间隔超过十分钟则显示时间
        if (nowDate - lastDate > 600000) {
          TimeFormat timeFormat = new TimeFormat(mContext, nowDate);
          msgTime.setText(timeFormat.getDetailTime());
          msgTime.setVisibility(View.VISIBLE);
        } else {
          msgTime.setVisibility(View.GONE);
        }
      }
    }

    // 显示头像
    if (holder.headIcon != null) {
      if (userInfo != null && !TextUtils.isEmpty(userInfo.getAvatar())) {
        userInfo.getAvatarBitmap(
            new GetAvatarBitmapCallback() {
              @Override
              public void gotResult(int status, String desc, Bitmap bitmap) {
                if (status == 0) {
                  holder.headIcon.setImageBitmap(bitmap);
                } else {
                  holder.headIcon.setImageResource(R.drawable.jmui_head_icon);
                  HandleResponseCode.onHandle(mContext, status, false);
                }
              }
            });
      } else {
        holder.headIcon.setImageResource(R.drawable.jmui_head_icon);
      }

      // TODO 点击头像事件

    }

    OnLongClickListener longClickListener =
        new OnLongClickListener() {
          @Override
          public boolean onLongClick(View arg0) {
            // 长按文本弹出菜单
            String name = userInfo.getUserName();
            OnClickListener listener =
                new OnClickListener() {

                  @Override
                  public void onClick(View v) {
                    switch (v.getId()) {
                      case R.id.copy_msg_btn:
                        if (msg.getContentType() == ContentType.text) {
                          final String content = ((TextContent) msg.getContent()).getText();
                          if (Build.VERSION.SDK_INT > 11) {
                            ClipboardManager clipboard =
                                (ClipboardManager)
                                    mContext.getSystemService(mContext.CLIPBOARD_SERVICE);
                            ClipData clip = ClipData.newPlainText("Simple text", content);
                            clipboard.setPrimaryClip(clip);
                          } else {
                            ClipboardManager clipboard =
                                (ClipboardManager)
                                    mContext.getSystemService(mContext.CLIPBOARD_SERVICE);
                            clipboard.setText(content); // 设置Clipboard 的内容
                            if (clipboard.hasText()) {
                              clipboard.getText();
                            }
                          }

                          Toast.makeText(
                                  mContext,
                                  mContext.getString(R.string.copy_toast),
                                  Toast.LENGTH_SHORT)
                              .show();
                          mDialog.dismiss();
                        }
                        break;
                      case R.id.forward_msg_btn:
                        mDialog.dismiss();
                        break;
                      case R.id.delete_msg_btn:
                        mConv.deleteMessage(msg.getId());
                        mMsgList.remove(position);
                        notifyDataSetChanged();
                        mDialog.dismiss();
                        break;
                    }
                  }
                };
            boolean hide = msg.getContentType() == ContentType.voice;
            mDialog = DialogCreator.createLongPressMessageDialog(mContext, name, hide, listener);
            mDialog.show();
            mDialog
                .getWindow()
                .setLayout((int) (0.8 * mWidth), WindowManager.LayoutParams.WRAP_CONTENT);
            return true;
          }
        };

    switch (msg.getContentType()) {
      case text:
        handleTextMsg(msg, holder, longClickListener);
        break;
      case image:
        handleImgMsg(msg, holder, position);
        break;
      case voice:
        handleVoiceMsg(msg, holder, position, longClickListener);
        break;
      case eventNotification:
        handleGroupChangeMsg(msg, holder, msgTime);
        break;
      default:
        handleCustomMsg(msg, holder);
    }

    return convertView;
  }
  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    ItemViewTag viewTag;
    Bitmap bitmap;
    if (convertView == null) {
      convertView = mInflater.inflate(R.layout.group_grid_view_item, null);
      viewTag =
          new ItemViewTag(
              (CircleImageView) convertView.findViewById(R.id.grid_avatar),
              (TextView) convertView.findViewById(R.id.grid_name),
              (ImageView) convertView.findViewById(R.id.grid_delete_icon));
      convertView.setTag(viewTag);
    } else {
      viewTag = (ItemViewTag) convertView.getTag();
    }

    if (position < mCurrentNum) {
      UserInfo userInfo = mMemberList.get(position);
      viewTag = (ItemViewTag) convertView.getTag();
      viewTag.icon.setVisibility(View.VISIBLE);
      viewTag.name.setVisibility(View.VISIBLE);
      bitmap = NativeImageLoader.getInstance().getBitmapFromMemCache(userInfo.getUserName());
      if (bitmap != null) viewTag.icon.setImageBitmap(bitmap);
      else {
        // 如果mediaID为空,表明用户没有设置过头像,用默认头像
        if (TextUtils.isEmpty(userInfo.getAvatar())) {
          viewTag.icon.setImageResource(R.drawable.head_icon);
        } else {
          File file = userInfo.getAvatarFile();
          // 如果本地存在头像
          if (file != null && file.isFile()) {
            bitmap =
                BitmapLoader.getBitmapFromFile(file.getAbsolutePath(), mDefaultSize, mDefaultSize);
            NativeImageLoader.getInstance().updateBitmapFromCache(userInfo.getUserName(), bitmap);
            viewTag.icon.setImageBitmap(bitmap);
            // 从网上拿头像
          } else {
            viewTag.icon.setImageResource(R.drawable.head_icon);
            final String userName = userInfo.getUserName();
            userInfo.getAvatarFileAsync(
                new DownloadAvatarCallback() {
                  @Override
                  public void gotResult(int status, String desc, File file) {
                    if (status == 0) {
                      Bitmap bitmap =
                          BitmapLoader.getBitmapFromFile(
                              file.getAbsolutePath(), mDefaultSize, mDefaultSize);
                      NativeImageLoader.getInstance().updateBitmapFromCache(userName, bitmap);
                      notifyDataSetChanged();
                    }
                  }
                });
          }
        }
      }

      if (TextUtils.isEmpty(userInfo.getNickname())) {
        viewTag.name.setText(userInfo.getUserName());
      } else {
        viewTag.name.setText(userInfo.getNickname());
      }
    }
    // 是Delete状态
    if (mIsShowDelete) {
      if (position < mCurrentNum) {
        UserInfo userInfo = mMemberList.get(position);
        // 群主不能删除自己
        if (userInfo.getUserName().equals(JMessageClient.getMyInfo().getUserName()))
          viewTag.deleteIcon.setVisibility(View.GONE);
        else viewTag.deleteIcon.setVisibility(View.VISIBLE);

      } else {
        viewTag.deleteIcon.setVisibility(View.INVISIBLE);
        viewTag.icon.setVisibility(View.INVISIBLE);
        viewTag.name.setVisibility(View.INVISIBLE);
      }
      // 非Delete状态
    } else {
      viewTag.deleteIcon.setVisibility(View.INVISIBLE);
      if (position < mCurrentNum) {
        viewTag.icon.setVisibility(View.VISIBLE);
        viewTag.name.setVisibility(View.VISIBLE);
      } else if (position == mCurrentNum) {
        viewTag = (ItemViewTag) convertView.getTag();
        viewTag.icon.setImageResource(R.drawable.chat_detail_add);
        viewTag.icon.setVisibility(View.VISIBLE);
        viewTag.name.setVisibility(View.INVISIBLE);

        // 设置删除群成员按钮
      } else if (position == mCurrentNum + 1) {
        if (mIsCreator && mCurrentNum > 1) {
          viewTag = (ItemViewTag) convertView.getTag();
          viewTag.icon.setImageResource(R.drawable.chat_detail_del);
          viewTag.icon.setVisibility(View.VISIBLE);
          viewTag.name.setVisibility(View.INVISIBLE);
        } else {
          viewTag = (ItemViewTag) convertView.getTag();
          viewTag.icon.setVisibility(View.GONE);
          viewTag.name.setVisibility(View.GONE);
        }
        // 空白项
      } else {
        viewTag = (ItemViewTag) convertView.getTag();
        viewTag.icon.setVisibility(View.INVISIBLE);
        viewTag.name.setVisibility(View.INVISIBLE);
      }
    }

    return convertView;
  }
  @Override
  public View getView(final int position, View convertView, ViewGroup parent) {
    final ViewHolder viewHolder;
    if (convertView == null) {
      LayoutInflater inflater = LayoutInflater.from(mContext);
      convertView = inflater.inflate(R.layout.all_member_item, null);
      viewHolder =
          new ViewHolder(
              (CircleImageView) convertView.findViewById(R.id.icon_iv),
              (TextView) convertView.findViewById(R.id.name),
              (CheckBox) convertView.findViewById(R.id.check_box_cb));
      convertView.setTag(viewHolder);
    } else {
      viewHolder = (ViewHolder) convertView.getTag();
    }

    final UserInfo userInfo = mMemberList.get(position);
    if (mIsDeleteMode) {
      if (position > 0) {
        viewHolder.checkBox.setVisibility(View.VISIBLE);
        viewHolder.checkBox.setOnClickListener(
            new View.OnClickListener() {
              @Override
              public void onClick(View v) {
                if (viewHolder.checkBox.isChecked()) {
                  mSelectedList.add(userInfo.getUserName());
                  mSelectMap.put(position, true);
                  addAnimation(viewHolder.checkBox);
                } else {
                  mSelectedList.remove(userInfo.getUserName());
                  mSelectMap.delete(position);
                }
              }
            });
        viewHolder.checkBox.setChecked(mSelectMap.get(position));
      } else {
        viewHolder.checkBox.setVisibility(View.INVISIBLE);
      }

    } else {
      viewHolder.checkBox.setVisibility(View.GONE);
    }

    if (!TextUtils.isEmpty(userInfo.getAvatar())) {
      userInfo.getAvatarBitmap(
          new GetAvatarBitmapCallback() {
            @Override
            public void gotResult(int status, String desc, Bitmap bitmap) {
              if (status == 0) {
                viewHolder.icon.setImageBitmap(bitmap);
              } else {
                viewHolder.icon.setImageResource(R.drawable.head_icon);
                HandleResponseCode.onHandle(mContext, status, false);
              }
            }
          });
    } else {
      viewHolder.icon.setImageResource(R.drawable.head_icon);
    }
    String displayName = userInfo.getNickname();
    if (TextUtils.isEmpty(displayName)) {
      viewHolder.displayName.setText(userInfo.getUserName());
    } else {
      viewHolder.displayName.setText(displayName);
    }

    return convertView;
  }