im::floo::floolib::BMXRosterItem

Contact

Inherits from BMXBaseObject

Public Functions

Name
BMXRosterItem()
synchronized void delete()
long rosterId()
Friend id
String username()
Friend name
String nickname()
Friend nickname
String avatarRatelUrl()
Ratel server address of friend avatar
String avatarUrl()
Friend avatar thumbnail server address
String avatarPath()
Local storage path of friend avatar
String avatarThumbnailUrl()
Friend avatar thumbnail address
String avatarThumbnailPath()
Local storage path of friend avatar thumbnail
String publicInfo()
Extension information which is visible to user's friends, such as address, personal state and more
String alias()
Comments added by user to adding friend
String ext()
User's server extension information
String localExt()
User's local extension information
BMXRosterItem.RosterRelation relation()
Contact relationship
boolean isMuteNotification()
Whether to alert user for message
BMXRosterItem.AddFriendAuthMode addFriendAuthMode()
How roster to validate adding friend.
String authQuestion()
How roster to validate friend.

Protected Functions

Name
BMXRosterItem(long cPtr, boolean cMemoryOwn)
void finalize()
long getCPtr(BMXRosterItem obj)

Public Attributes

Name
transient long swigCPtr

Public Functions Documentation

function BMXRosterItem

inline BMXRosterItem()

Example:

function delete

inline synchronized void delete()

Example:

function rosterId

inline long rosterId()

Friend id

Return: int64_t

Example:

public void putRoster(BMXRosterItem item) {
    if (item != null)
        mRosterCache.put(item.rosterId(), item);
private void removeRoster(final BMXRosterItem item, final int position) {
    if (item == null) {
        return;
    }
    showLoadingDialog(true);
    RosterManager.getInstance().remove(item.rosterId(), bmxErrorCode -> {
        dismissLoadingDialog();
        if (BaseManager.bmxFinish(bmxErrorCode)) {
            ChatManager.getInstance().deleteConversation(item.rosterId(), true);
            mAdapter.remove(position);
        }
    });
ChatManager.getInstance().deleteConversation(item.rosterId(), true);
TextView add = holder.findViewById(R.id.add_contact);
final BMXRosterItem item = getItem(position);
if (item == null) {
    return;
}
//是否是好友
BMXRosterItem.RosterRelation rosterRelation = item.relation();
boolean friend = rosterRelation == BMXRosterItem.RosterRelation.Friend;
long myId = SharePreferenceUtils.getInstance().getUserId();
// 自己不展示添加按钮
add.setVisibility(myId == item.rosterId() || friend ? View.GONE : View.VISIBLE);
add.setOnClickListener(v -> {
    long rosterId = item.rosterId();
    showAddReason(rosterId, item.authQuestion());
});

String name = item.username();
title.setText(name);
ChatUtils.getInstance().showRosterAvatar(item, avatar, mConfig);
long rosterId = item.rosterId();
protected void bindData(BMXRosterItemList itemList) {
    if (itemList != null && !itemList.isEmpty()) {
        List<BMXRosterItem> rosterItems = new ArrayList<>();
        for (int i = 0; i < itemList.size(); i++) {
            BMXRosterItem item = itemList.get(i);
            if (item == null) {
                continue;
            }
            if (mFilterList == null || !mFilterList.contains(String.valueOf(item.rosterId()))) {
                rosterItems.add(itemList.get(i));
            }
        }
        mAdapter.replaceList(rosterItems);
        mRecycler.setVisibility(View.VISIBLE);
        mEmptyView.setVisibility(View.GONE);
    } else {
        mRecycler.setVisibility(View.GONE);
        mEmptyView.setVisibility(View.VISIBLE);
    }
@Override
protected void onBindHolder(BaseViewHolder holder, int position) {
    ShapeImageView icon = holder.findViewById(R.id.img_icon);
    TextView tvName = holder.findViewById(R.id.txt_name);
    CheckBox checkBox = holder.findViewById(R.id.cb_choice);
    BMXRosterItem member = getItem(position);
    if (member == null) {
        return;
    }
    if (mIsShowCheck) {
        boolean isCheck = mSelected.containsKey(member.rosterId())
                && mSelected.get(member.rosterId());
        checkBox.setChecked(isCheck);
        checkBox.setVisibility(member.rosterId() != MessageConfig.MEMBER_ADD
                && member.rosterId() != MessageConfig.MEMBER_REMOVE ? View.VISIBLE
                        : View.INVISIBLE);
    } else {
        checkBox.setVisibility(View.GONE);
    }
    String name = "";
protected void onBindHolder(BaseViewHolder holder, int position) {
    ShapeImageView icon = holder.findViewById(R.id.img_icon);
    TextView tvName = holder.findViewById(R.id.txt_name);
    CheckBox checkBox = holder.findViewById(R.id.cb_choice);
    BMXRosterItem member = getItem(position);
    if (member == null) {
        return;
    }
    if (mIsShowCheck) {
        boolean isCheck = mSelected.containsKey(member.rosterId())
                && mSelected.get(member.rosterId());
        checkBox.setChecked(isCheck);
        checkBox.setVisibility(member.rosterId() != MessageConfig.MEMBER_ADD
                && member.rosterId() != MessageConfig.MEMBER_REMOVE ? View.VISIBLE
                        : View.INVISIBLE);
    } else {
        checkBox.setVisibility(View.GONE);
    }
    String name = "";
    if (!TextUtils.isEmpty(member.alias())) {

function username

inline String username()

Friend name

Return: std::string

Example:

// sticky.setText(bean == null ? "" : bean.getFirst());
if (bean == null) {
    return;
}
String name = "";
if (!TextUtils.isEmpty(bean.alias())) {
    name = bean.alias();
} else if (!TextUtils.isEmpty(bean.nickname())) {
    name = bean.nickname();
} else {
    name = bean.username();
}
title.setText(name);
ChatUtils.getInstance().showRosterAvatar(bean, avatar, mConfig);
BMXRosterItem.RosterRelation rosterRelation = item.relation();
boolean friend = rosterRelation == BMXRosterItem.RosterRelation.Friend;
long myId = SharePreferenceUtils.getInstance().getUserId();
// 自己不展示添加按钮
add.setVisibility(myId == item.rosterId() || friend ? View.GONE : View.VISIBLE);
add.setOnClickListener(v -> {
    long rosterId = item.rosterId();
    showAddReason(rosterId, item.authQuestion());
});

String name = item.username();
title.setText(name);
ChatUtils.getInstance().showRosterAvatar(item, avatar, mConfig);
}
BMXRosterItem rosterItem = RosterFetcher.getFetcher().getRoster(item.getMRosterId());
ChatUtils.getInstance().showRosterAvatar(rosterItem, avatar, mConfig);
String name = "";
if (rosterItem != null) {
    if (!TextUtils.isEmpty(rosterItem.alias())) {
        name = rosterItem.alias();
    } else if (!TextUtils.isEmpty(rosterItem.nickname())) {
        name = rosterItem.nickname();
    } else {
        name = rosterItem.username();
    }
}

title.setText(!TextUtils.isEmpty(name) ? name : "");

BMXRosterService.ApplicationStatus applicationStatus = item.getMStatus();
String statusDesc = "";
if (applicationStatus != null) {
    if (applicationStatus == BMXRosterService.ApplicationStatus.Accepted) {
                    : View.INVISIBLE);
} else {
    checkBox.setVisibility(View.GONE);
}
String name = "";
if (!TextUtils.isEmpty(member.alias())) {
    name = member.alias();
} else if (!TextUtils.isEmpty(member.nickname())) {
    name = member.nickname();
} else {
    name = member.username();
}
tvName.setText(name);
ChatUtils.getInstance().showRosterAvatar(member, icon, mConfig);
            mTvOpenChat.setVisibility(View.GONE);
            add.setVisibility(View.VISIBLE);
            add.setText(getString(R.string.add));
        }
//        if (friend) {
//            // 好友直接跳转单聊
//            ChatSingleActivity.startChatActivity(this, BMXMessage.MessageType.Single, mRosterId);
//            finish();
//            return;
//        }
        String name = mRosterItem.username();
        String nickName = mRosterItem.nickname();
        ChatUtils.getInstance().showRosterAvatar(mRosterItem, mUserIcon, mConfig);
        if (!friend) {
            // 非好友 需要强制更新头像
            ChatUtils.getInstance().downloadUserAvatar(mRosterItem, mUserIcon, mConfig);
        }
        long userId = mRosterItem.rosterId();
        mUserName.setText(TextUtils.isEmpty(name) ? "" : name);
        mNickName.setText(TextUtils.isEmpty(nickName) ? "" : getString(R.string.nickname_colon) + nickName);
        .getRoster(item.getMApplicationId());
final BMXGroup groupItem = RosterFetcher.getFetcher()
        .getGroup(item.getMGroupId());
ChatUtils.getInstance().showRosterAvatar(rosterItem, avatar, mConfig);
String name = "";
if (!TextUtils.isEmpty(rosterItem.alias())) {
    name = rosterItem.alias();
} else if (!TextUtils.isEmpty(rosterItem.nickname())) {
    name = rosterItem.nickname();
} else {
    name = rosterItem.username();
}
title.setText(name);

BMXGroup.ApplicationStatus inviteStatus = item.getMStatus();
String statusDesc = "";
if (inviteStatus != null) {
    if (inviteStatus == BMXGroup.ApplicationStatus.Accepted) {
        statusDesc = getString(R.string.added);
        accept.setVisibility(View.INVISIBLE);
                : "");

BMXRosterItem rosterItem = RosterFetcher.getFetcher().getRoster(item.getMInviterId());
String name = "";
if (rosterItem != null) {
    if (!TextUtils.isEmpty(rosterItem.alias())) {
        name = rosterItem.alias();
    } else if (!TextUtils.isEmpty(rosterItem.nickname())) {
        name = rosterItem.nickname();
    } else {
        name = rosterItem.username();
    }
}

BMXGroup.InvitationStatus inviteStatus = item.getMStatus();
String statusDesc = "";
if (inviteStatus != null) {
    if (inviteStatus == BMXGroup.InvitationStatus.Accepted) {
        statusDesc = getString(R.string.added);
        accept.setVisibility(View.INVISIBLE);
boolean isDisturb = false;
BMXConversation.Type type = item == null ? null : item.type();
String name = "";
if (type != null && type == BMXConversation.Type.Single) {
    BMXRosterItem rosterItem = RosterFetcher.getFetcher().getRoster(item.conversationId());
    if (rosterItem != null && !TextUtils.isEmpty(rosterItem.alias())) {
        name = rosterItem.alias();
    } else if (rosterItem != null && !TextUtils.isEmpty(rosterItem.nickname())) {
        name = rosterItem.nickname();
    } else if (rosterItem != null) {
        name = rosterItem.username();
    }
    if (item.conversationId() == 0){
        name = mContext.getString(R.string.sys_msg);
    }
    ChatUtils.getInstance().showRosterAvatar(rosterItem, avatar, mConfig);
    isDisturb = rosterItem != null && rosterItem.isMuteNotification();
} else if (type != null && type == BMXConversation.Type.Group) {
    BMXGroup groupItem = RosterFetcher.getFetcher().getGroup(item.conversationId());
    name = groupItem != null ? groupItem.name() : "";

function nickname

inline String nickname()

Friend nickname

Return: std::string

Example:

// sticky.setVisibility(View.GONE);
// }
// }
// sticky.setText(bean == null ? "" : bean.getFirst());
if (bean == null) {
    return;
}
String name = "";
if (!TextUtils.isEmpty(bean.alias())) {
    name = bean.alias();
} else if (!TextUtils.isEmpty(bean.nickname())) {
    name = bean.nickname();
} else {
    name = bean.username();
}
title.setText(name);
ChatUtils.getInstance().showRosterAvatar(bean, avatar, mConfig);
// }
// }
// sticky.setText(bean == null ? "" : bean.getFirst());
if (bean == null) {
    return;
}
String name = "";
if (!TextUtils.isEmpty(bean.alias())) {
    name = bean.alias();
} else if (!TextUtils.isEmpty(bean.nickname())) {
    name = bean.nickname();
} else {
    name = bean.username();
}
title.setText(name);
ChatUtils.getInstance().showRosterAvatar(bean, avatar, mConfig);
final BMXRosterService.Application item = getItem(position);
if (item == null) {
    return;
}
BMXRosterItem rosterItem = RosterFetcher.getFetcher().getRoster(item.getMRosterId());
ChatUtils.getInstance().showRosterAvatar(rosterItem, avatar, mConfig);
String name = "";
if (rosterItem != null) {
    if (!TextUtils.isEmpty(rosterItem.alias())) {
        name = rosterItem.alias();
    } else if (!TextUtils.isEmpty(rosterItem.nickname())) {
        name = rosterItem.nickname();
    } else {
        name = rosterItem.username();
    }
}

title.setText(!TextUtils.isEmpty(name) ? name : "");

BMXRosterService.ApplicationStatus applicationStatus = item.getMStatus();
if (item == null) {
    return;
}
BMXRosterItem rosterItem = RosterFetcher.getFetcher().getRoster(item.getMRosterId());
ChatUtils.getInstance().showRosterAvatar(rosterItem, avatar, mConfig);
String name = "";
if (rosterItem != null) {
    if (!TextUtils.isEmpty(rosterItem.alias())) {
        name = rosterItem.alias();
    } else if (!TextUtils.isEmpty(rosterItem.nickname())) {
        name = rosterItem.nickname();
    } else {
        name = rosterItem.username();
    }
}

title.setText(!TextUtils.isEmpty(name) ? name : "");

BMXRosterService.ApplicationStatus applicationStatus = item.getMStatus();
String statusDesc = "";
    checkBox.setChecked(isCheck);
    checkBox.setVisibility(member.rosterId() != MessageConfig.MEMBER_ADD
            && member.rosterId() != MessageConfig.MEMBER_REMOVE ? View.VISIBLE
                    : View.INVISIBLE);
} else {
    checkBox.setVisibility(View.GONE);
}
String name = "";
if (!TextUtils.isEmpty(member.alias())) {
    name = member.alias();
} else if (!TextUtils.isEmpty(member.nickname())) {
    name = member.nickname();
} else {
    name = member.username();
}
tvName.setText(name);
ChatUtils.getInstance().showRosterAvatar(member, icon, mConfig);
    checkBox.setVisibility(member.rosterId() != MessageConfig.MEMBER_ADD
            && member.rosterId() != MessageConfig.MEMBER_REMOVE ? View.VISIBLE
                    : View.INVISIBLE);
} else {
    checkBox.setVisibility(View.GONE);
}
String name = "";
if (!TextUtils.isEmpty(member.alias())) {
    name = member.alias();
} else if (!TextUtils.isEmpty(member.nickname())) {
    name = member.nickname();
} else {
    name = member.username();
}
tvName.setText(name);
ChatUtils.getInstance().showRosterAvatar(member, icon, mConfig);
            add.setVisibility(View.VISIBLE);
            add.setText(getString(R.string.add));
        }
//        if (friend) {
//            // 好友直接跳转单聊
//            ChatSingleActivity.startChatActivity(this, BMXMessage.MessageType.Single, mRosterId);
//            finish();
//            return;
//        }
        String name = mRosterItem.username();
        String nickName = mRosterItem.nickname();
        ChatUtils.getInstance().showRosterAvatar(mRosterItem, mUserIcon, mConfig);
        if (!friend) {
            // 非好友 需要强制更新头像
            ChatUtils.getInstance().downloadUserAvatar(mRosterItem, mUserIcon, mConfig);
        }
        long userId = mRosterItem.rosterId();
        mUserName.setText(TextUtils.isEmpty(name) ? "" : name);
        mNickName.setText(TextUtils.isEmpty(nickName) ? "" : getString(R.string.nickname_colon) + nickName);
        mUserId.setText(userId <= 0 ? "" : "ID:" + userId);
    return;
}
final BMXRosterItem rosterItem = RosterFetcher.getFetcher()
        .getRoster(item.getMApplicationId());
final BMXGroup groupItem = RosterFetcher.getFetcher()
        .getGroup(item.getMGroupId());
ChatUtils.getInstance().showRosterAvatar(rosterItem, avatar, mConfig);
String name = "";
if (!TextUtils.isEmpty(rosterItem.alias())) {
    name = rosterItem.alias();
} else if (!TextUtils.isEmpty(rosterItem.nickname())) {
    name = rosterItem.nickname();
} else {
    name = rosterItem.username();
}
title.setText(name);

BMXGroup.ApplicationStatus inviteStatus = item.getMStatus();
String statusDesc = "";
if (inviteStatus != null) {

function avatarRatelUrl

inline String avatarRatelUrl()

Ratel server address of friend avatar

Return: std::string

Example:

function avatarUrl

inline String avatarUrl()

Friend avatar thumbnail server address

Return: std::string

Example:

}
String avatarUrl = "";
if (rosterItem == null) {
    mViewCache.remove(imageView.hashCode());
    avatarUrl = "drawable://" + R.drawable.bmx_icon;
} else {
    // 对需要展示的view加入缓存 防止在页面频繁刷新 view复用的时候展示错乱
    // 新增直接展示头像地址 不需下载
    if (!TextUtils.isEmpty(rosterItem.avatarThumbnailUrl())) {
        avatarUrl = rosterItem.avatarThumbnailUrl();
    } else if (!TextUtils.isEmpty(rosterItem.avatarUrl())) {
        avatarUrl = rosterItem.avatarUrl();
    } else if (!TextUtils.isEmpty(rosterItem.avatarThumbnailPath())
            && new File(rosterItem.avatarThumbnailPath()).exists()
            && new File(rosterItem.avatarThumbnailPath()).isFile()) {
        avatarUrl = "file://" + rosterItem.avatarThumbnailPath();
    } else if (!TextUtils.isEmpty(rosterItem.avatarPath())
            && new File(rosterItem.avatarPath()).exists()
            && new File(rosterItem.avatarPath()).isFile()) {
        avatarUrl = "file://" + rosterItem.avatarPath();
String avatarUrl = "";
if (rosterItem == null) {
    mViewCache.remove(imageView.hashCode());
    avatarUrl = "drawable://" + R.drawable.bmx_icon;
} else {
    // 对需要展示的view加入缓存 防止在页面频繁刷新 view复用的时候展示错乱
    // 新增直接展示头像地址 不需下载
    if (!TextUtils.isEmpty(rosterItem.avatarThumbnailUrl())) {
        avatarUrl = rosterItem.avatarThumbnailUrl();
    } else if (!TextUtils.isEmpty(rosterItem.avatarUrl())) {
        avatarUrl = rosterItem.avatarUrl();
    } else if (!TextUtils.isEmpty(rosterItem.avatarThumbnailPath())
            && new File(rosterItem.avatarThumbnailPath()).exists()
            && new File(rosterItem.avatarThumbnailPath()).isFile()) {
        avatarUrl = "file://" + rosterItem.avatarThumbnailPath();
    } else if (!TextUtils.isEmpty(rosterItem.avatarPath())
            && new File(rosterItem.avatarPath()).exists()
            && new File(rosterItem.avatarPath()).isFile()) {
        avatarUrl = "file://" + rosterItem.avatarPath();
    } else {

function avatarPath

inline String avatarPath()

Local storage path of friend avatar

Return: std::string

Example:

    // 对需要展示的view加入缓存 防止在页面频繁刷新 view复用的时候展示错乱
    // 新增直接展示头像地址 不需下载
    if (!TextUtils.isEmpty(rosterItem.avatarThumbnailUrl())) {
        avatarUrl = rosterItem.avatarThumbnailUrl();
    } else if (!TextUtils.isEmpty(rosterItem.avatarUrl())) {
        avatarUrl = rosterItem.avatarUrl();
    } else if (!TextUtils.isEmpty(rosterItem.avatarThumbnailPath())
            && new File(rosterItem.avatarThumbnailPath()).exists()
            && new File(rosterItem.avatarThumbnailPath()).isFile()) {
        avatarUrl = "file://" + rosterItem.avatarThumbnailPath();
    } else if (!TextUtils.isEmpty(rosterItem.avatarPath())
            && new File(rosterItem.avatarPath()).exists()
            && new File(rosterItem.avatarPath()).isFile()) {
        avatarUrl = "file://" + rosterItem.avatarPath();
    } else {
        downloadUserAvatar(rosterItem, imageView, config);
    }
}
BMImageLoader.getInstance().display(imageView, avatarUrl, config);
    // 新增直接展示头像地址 不需下载
    if (!TextUtils.isEmpty(rosterItem.avatarThumbnailUrl())) {
        avatarUrl = rosterItem.avatarThumbnailUrl();
    } else if (!TextUtils.isEmpty(rosterItem.avatarUrl())) {
        avatarUrl = rosterItem.avatarUrl();
    } else if (!TextUtils.isEmpty(rosterItem.avatarThumbnailPath())
            && new File(rosterItem.avatarThumbnailPath()).exists()
            && new File(rosterItem.avatarThumbnailPath()).isFile()) {
        avatarUrl = "file://" + rosterItem.avatarThumbnailPath();
    } else if (!TextUtils.isEmpty(rosterItem.avatarPath())
            && new File(rosterItem.avatarPath()).exists()
            && new File(rosterItem.avatarPath()).isFile()) {
        avatarUrl = "file://" + rosterItem.avatarPath();
    } else {
        downloadUserAvatar(rosterItem, imageView, config);
    }
}
BMImageLoader.getInstance().display(imageView, avatarUrl, config);
    if (!TextUtils.isEmpty(rosterItem.avatarThumbnailUrl())) {
        avatarUrl = rosterItem.avatarThumbnailUrl();
    } else if (!TextUtils.isEmpty(rosterItem.avatarUrl())) {
        avatarUrl = rosterItem.avatarUrl();
    } else if (!TextUtils.isEmpty(rosterItem.avatarThumbnailPath())
            && new File(rosterItem.avatarThumbnailPath()).exists()
            && new File(rosterItem.avatarThumbnailPath()).isFile()) {
        avatarUrl = "file://" + rosterItem.avatarThumbnailPath();
    } else if (!TextUtils.isEmpty(rosterItem.avatarPath())
            && new File(rosterItem.avatarPath()).exists()
            && new File(rosterItem.avatarPath()).isFile()) {
        avatarUrl = "file://" + rosterItem.avatarPath();
    } else {
        downloadUserAvatar(rosterItem, imageView, config);
    }
}
BMImageLoader.getInstance().display(imageView, avatarUrl, config);
        avatarUrl = rosterItem.avatarThumbnailUrl();
    } else if (!TextUtils.isEmpty(rosterItem.avatarUrl())) {
        avatarUrl = rosterItem.avatarUrl();
    } else if (!TextUtils.isEmpty(rosterItem.avatarThumbnailPath())
            && new File(rosterItem.avatarThumbnailPath()).exists()
            && new File(rosterItem.avatarThumbnailPath()).isFile()) {
        avatarUrl = "file://" + rosterItem.avatarThumbnailPath();
    } else if (!TextUtils.isEmpty(rosterItem.avatarPath())
            && new File(rosterItem.avatarPath()).exists()
            && new File(rosterItem.avatarPath()).isFile()) {
        avatarUrl = "file://" + rosterItem.avatarPath();
    } else {
        downloadUserAvatar(rosterItem, imageView, config);
    }
}
BMImageLoader.getInstance().display(imageView, avatarUrl, config);

function avatarThumbnailUrl

inline String avatarThumbnailUrl()

Friend avatar thumbnail address

Return: std::string

Example:

if (imageView == null) {
    return;
}
String avatarUrl = "";
if (rosterItem == null) {
    mViewCache.remove(imageView.hashCode());
    avatarUrl = "drawable://" + R.drawable.bmx_icon;
} else {
    // 对需要展示的view加入缓存 防止在页面频繁刷新 view复用的时候展示错乱
    // 新增直接展示头像地址 不需下载
    if (!TextUtils.isEmpty(rosterItem.avatarThumbnailUrl())) {
        avatarUrl = rosterItem.avatarThumbnailUrl();
    } else if (!TextUtils.isEmpty(rosterItem.avatarUrl())) {
        avatarUrl = rosterItem.avatarUrl();
    } else if (!TextUtils.isEmpty(rosterItem.avatarThumbnailPath())
            && new File(rosterItem.avatarThumbnailPath()).exists()
            && new File(rosterItem.avatarThumbnailPath()).isFile()) {
        avatarUrl = "file://" + rosterItem.avatarThumbnailPath();
    } else if (!TextUtils.isEmpty(rosterItem.avatarPath())
            && new File(rosterItem.avatarPath()).exists()
    return;
}
String avatarUrl = "";
if (rosterItem == null) {
    mViewCache.remove(imageView.hashCode());
    avatarUrl = "drawable://" + R.drawable.bmx_icon;
} else {
    // 对需要展示的view加入缓存 防止在页面频繁刷新 view复用的时候展示错乱
    // 新增直接展示头像地址 不需下载
    if (!TextUtils.isEmpty(rosterItem.avatarThumbnailUrl())) {
        avatarUrl = rosterItem.avatarThumbnailUrl();
    } else if (!TextUtils.isEmpty(rosterItem.avatarUrl())) {
        avatarUrl = rosterItem.avatarUrl();
    } else if (!TextUtils.isEmpty(rosterItem.avatarThumbnailPath())
            && new File(rosterItem.avatarThumbnailPath()).exists()
            && new File(rosterItem.avatarThumbnailPath()).isFile()) {
        avatarUrl = "file://" + rosterItem.avatarThumbnailPath();
    } else if (!TextUtils.isEmpty(rosterItem.avatarPath())
            && new File(rosterItem.avatarPath()).exists()
            && new File(rosterItem.avatarPath()).isFile()) {

function avatarThumbnailPath

inline String avatarThumbnailPath()

Local storage path of friend avatar thumbnail

Return: std::string

Example:

if (rosterItem == null) {
    mViewCache.remove(imageView.hashCode());
    avatarUrl = "drawable://" + R.drawable.bmx_icon;
} else {
    // 对需要展示的view加入缓存 防止在页面频繁刷新 view复用的时候展示错乱
    // 新增直接展示头像地址 不需下载
    if (!TextUtils.isEmpty(rosterItem.avatarThumbnailUrl())) {
        avatarUrl = rosterItem.avatarThumbnailUrl();
    } else if (!TextUtils.isEmpty(rosterItem.avatarUrl())) {
        avatarUrl = rosterItem.avatarUrl();
    } else if (!TextUtils.isEmpty(rosterItem.avatarThumbnailPath())
            && new File(rosterItem.avatarThumbnailPath()).exists()
            && new File(rosterItem.avatarThumbnailPath()).isFile()) {
        avatarUrl = "file://" + rosterItem.avatarThumbnailPath();
    } else if (!TextUtils.isEmpty(rosterItem.avatarPath())
            && new File(rosterItem.avatarPath()).exists()
            && new File(rosterItem.avatarPath()).isFile()) {
        avatarUrl = "file://" + rosterItem.avatarPath();
    } else {
        downloadUserAvatar(rosterItem, imageView, config);
    mViewCache.remove(imageView.hashCode());
    avatarUrl = "drawable://" + R.drawable.bmx_icon;
} else {
    // 对需要展示的view加入缓存 防止在页面频繁刷新 view复用的时候展示错乱
    // 新增直接展示头像地址 不需下载
    if (!TextUtils.isEmpty(rosterItem.avatarThumbnailUrl())) {
        avatarUrl = rosterItem.avatarThumbnailUrl();
    } else if (!TextUtils.isEmpty(rosterItem.avatarUrl())) {
        avatarUrl = rosterItem.avatarUrl();
    } else if (!TextUtils.isEmpty(rosterItem.avatarThumbnailPath())
            && new File(rosterItem.avatarThumbnailPath()).exists()
            && new File(rosterItem.avatarThumbnailPath()).isFile()) {
        avatarUrl = "file://" + rosterItem.avatarThumbnailPath();
    } else if (!TextUtils.isEmpty(rosterItem.avatarPath())
            && new File(rosterItem.avatarPath()).exists()
            && new File(rosterItem.avatarPath()).isFile()) {
        avatarUrl = "file://" + rosterItem.avatarPath();
    } else {
        downloadUserAvatar(rosterItem, imageView, config);
    avatarUrl = "drawable://" + R.drawable.bmx_icon;
} else {
    // 对需要展示的view加入缓存 防止在页面频繁刷新 view复用的时候展示错乱
    // 新增直接展示头像地址 不需下载
    if (!TextUtils.isEmpty(rosterItem.avatarThumbnailUrl())) {
        avatarUrl = rosterItem.avatarThumbnailUrl();
    } else if (!TextUtils.isEmpty(rosterItem.avatarUrl())) {
        avatarUrl = rosterItem.avatarUrl();
    } else if (!TextUtils.isEmpty(rosterItem.avatarThumbnailPath())
            && new File(rosterItem.avatarThumbnailPath()).exists()
            && new File(rosterItem.avatarThumbnailPath()).isFile()) {
        avatarUrl = "file://" + rosterItem.avatarThumbnailPath();
    } else if (!TextUtils.isEmpty(rosterItem.avatarPath())
            && new File(rosterItem.avatarPath()).exists()
            && new File(rosterItem.avatarPath()).isFile()) {
        avatarUrl = "file://" + rosterItem.avatarPath();
    } else {
        downloadUserAvatar(rosterItem, imageView, config);
    }
} else {
    // 对需要展示的view加入缓存 防止在页面频繁刷新 view复用的时候展示错乱
    // 新增直接展示头像地址 不需下载
    if (!TextUtils.isEmpty(rosterItem.avatarThumbnailUrl())) {
        avatarUrl = rosterItem.avatarThumbnailUrl();
    } else if (!TextUtils.isEmpty(rosterItem.avatarUrl())) {
        avatarUrl = rosterItem.avatarUrl();
    } else if (!TextUtils.isEmpty(rosterItem.avatarThumbnailPath())
            && new File(rosterItem.avatarThumbnailPath()).exists()
            && new File(rosterItem.avatarThumbnailPath()).isFile()) {
        avatarUrl = "file://" + rosterItem.avatarThumbnailPath();
    } else if (!TextUtils.isEmpty(rosterItem.avatarPath())
            && new File(rosterItem.avatarPath()).exists()
            && new File(rosterItem.avatarPath()).isFile()) {
        avatarUrl = "file://" + rosterItem.avatarPath();
    } else {
        downloadUserAvatar(rosterItem, imageView, config);
    }
}
BMImageLoader.getInstance().display(imageView, avatarUrl, config);

function publicInfo

inline String publicInfo()

Extension information which is visible to user's friends, such as address, personal state and more

Return: JSON(std::string)

Example:

String nickName = mRosterItem.nickname();
ChatUtils.getInstance().showRosterAvatar(mRosterItem, mUserIcon, mConfig);
if (!friend) {
    // 非好友 需要强制更新头像
    ChatUtils.getInstance().downloadUserAvatar(mRosterItem, mUserIcon, mConfig);
}
long userId = mRosterItem.rosterId();
mUserName.setText(TextUtils.isEmpty(name) ? "" : name);
mNickName.setText(TextUtils.isEmpty(nickName) ? "" : getString(R.string.nickname_colon) + nickName);
mUserId.setText(userId <= 0 ? "" : "ID:" + userId);
String publicInfo = mRosterItem.publicInfo();
if (TextUtils.isEmpty(publicInfo)) {
    mTvPublic.setVisibility(View.GONE);
} else {
    mTvPublic.setVisibility(View.VISIBLE);
    mTvPublic.setText(publicInfo);
}

String alias = mRosterItem.alias();
mSetAlias.setEndContent(TextUtils.isEmpty(alias) ? "" : alias);

function alias

inline String alias()

Comments added by user to adding friend

Return: JSON(std::string)

Example:

// sticky.setVisibility(View.VISIBLE);
// } else {
// sticky.setVisibility(View.GONE);
// }
// }
// sticky.setText(bean == null ? "" : bean.getFirst());
if (bean == null) {
    return;
}
String name = "";
if (!TextUtils.isEmpty(bean.alias())) {
    name = bean.alias();
} else if (!TextUtils.isEmpty(bean.nickname())) {
    name = bean.nickname();
} else {
    name = bean.username();
}
title.setText(name);
ChatUtils.getInstance().showRosterAvatar(bean, avatar, mConfig);
// } else {
// sticky.setVisibility(View.GONE);
// }
// }
// sticky.setText(bean == null ? "" : bean.getFirst());
if (bean == null) {
    return;
}
String name = "";
if (!TextUtils.isEmpty(bean.alias())) {
    name = bean.alias();
} else if (!TextUtils.isEmpty(bean.nickname())) {
    name = bean.nickname();
} else {
    name = bean.username();
}
title.setText(name);
ChatUtils.getInstance().showRosterAvatar(bean, avatar, mConfig);
TextView accept = holder.findViewById(R.id.tv_accept);
TextView reason = holder.findViewById(R.id.apply_reason);
final BMXRosterService.Application item = getItem(position);
if (item == null) {
    return;
}
BMXRosterItem rosterItem = RosterFetcher.getFetcher().getRoster(item.getMRosterId());
ChatUtils.getInstance().showRosterAvatar(rosterItem, avatar, mConfig);
String name = "";
if (rosterItem != null) {
    if (!TextUtils.isEmpty(rosterItem.alias())) {
        name = rosterItem.alias();
    } else if (!TextUtils.isEmpty(rosterItem.nickname())) {
        name = rosterItem.nickname();
    } else {
        name = rosterItem.username();
    }
}

title.setText(!TextUtils.isEmpty(name) ? name : "");
TextView reason = holder.findViewById(R.id.apply_reason);
final BMXRosterService.Application item = getItem(position);
if (item == null) {
    return;
}
BMXRosterItem rosterItem = RosterFetcher.getFetcher().getRoster(item.getMRosterId());
ChatUtils.getInstance().showRosterAvatar(rosterItem, avatar, mConfig);
String name = "";
if (rosterItem != null) {
    if (!TextUtils.isEmpty(rosterItem.alias())) {
        name = rosterItem.alias();
    } else if (!TextUtils.isEmpty(rosterItem.nickname())) {
        name = rosterItem.nickname();
    } else {
        name = rosterItem.username();
    }
}

title.setText(!TextUtils.isEmpty(name) ? name : "");
    boolean isCheck = mSelected.containsKey(member.rosterId())
            && mSelected.get(member.rosterId());
    checkBox.setChecked(isCheck);
    checkBox.setVisibility(member.rosterId() != MessageConfig.MEMBER_ADD
            && member.rosterId() != MessageConfig.MEMBER_REMOVE ? View.VISIBLE
                    : View.INVISIBLE);
} else {
    checkBox.setVisibility(View.GONE);
}
String name = "";
if (!TextUtils.isEmpty(member.alias())) {
    name = member.alias();
} else if (!TextUtils.isEmpty(member.nickname())) {
    name = member.nickname();
} else {
    name = member.username();
}
tvName.setText(name);
ChatUtils.getInstance().showRosterAvatar(member, icon, mConfig);
            && mSelected.get(member.rosterId());
    checkBox.setChecked(isCheck);
    checkBox.setVisibility(member.rosterId() != MessageConfig.MEMBER_ADD
            && member.rosterId() != MessageConfig.MEMBER_REMOVE ? View.VISIBLE
                    : View.INVISIBLE);
} else {
    checkBox.setVisibility(View.GONE);
}
String name = "";
if (!TextUtils.isEmpty(member.alias())) {
    name = member.alias();
} else if (!TextUtils.isEmpty(member.nickname())) {
    name = member.nickname();
} else {
    name = member.username();
}
tvName.setText(name);
ChatUtils.getInstance().showRosterAvatar(member, icon, mConfig);
mNickName.setText(TextUtils.isEmpty(nickName) ? "" : getString(R.string.nickname_colon) + nickName);
mUserId.setText(userId <= 0 ? "" : "ID:" + userId);
String publicInfo = mRosterItem.publicInfo();
if (TextUtils.isEmpty(publicInfo)) {
    mTvPublic.setVisibility(View.GONE);
} else {
    mTvPublic.setVisibility(View.VISIBLE);
    mTvPublic.setText(publicInfo);
}

String alias = mRosterItem.alias();
mSetAlias.setEndContent(TextUtils.isEmpty(alias) ? "" : alias);

String ext = mRosterItem.ext();
if (TextUtils.isEmpty(ext)) {
    mTvExt.setVisibility(View.GONE);
} else {
    mTvExt.setVisibility(View.VISIBLE);
    mTvExt.setText(ext);
final BMXGroup.Application item = getItem(position);
if (item == null) {
    return;
}
final BMXRosterItem rosterItem = RosterFetcher.getFetcher()
        .getRoster(item.getMApplicationId());
final BMXGroup groupItem = RosterFetcher.getFetcher()
        .getGroup(item.getMGroupId());
ChatUtils.getInstance().showRosterAvatar(rosterItem, avatar, mConfig);
String name = "";
if (!TextUtils.isEmpty(rosterItem.alias())) {
    name = rosterItem.alias();
} else if (!TextUtils.isEmpty(rosterItem.nickname())) {
    name = rosterItem.nickname();
} else {
    name = rosterItem.username();
}
title.setText(name);

BMXGroup.ApplicationStatus inviteStatus = item.getMStatus();

function ext

inline String ext()

User's server extension information

Return: JSON(std::string)

Example:

if (TextUtils.isEmpty(publicInfo)) {
    mTvPublic.setVisibility(View.GONE);
} else {
    mTvPublic.setVisibility(View.VISIBLE);
    mTvPublic.setText(publicInfo);
}

String alias = mRosterItem.alias();
mSetAlias.setEndContent(TextUtils.isEmpty(alias) ? "" : alias);

String ext = mRosterItem.ext();
if (TextUtils.isEmpty(ext)) {
    mTvExt.setVisibility(View.GONE);
} else {
    mTvExt.setVisibility(View.VISIBLE);
    mTvExt.setText(ext);
}
// 免打扰
boolean isBlock = mRosterItem.isMuteNotification();
mSetDistrub.setCheckStatus(isBlock);

function localExt

inline String localExt()

User's local extension information

Return: JSON(std::string)

Example:

function relation

inline BMXRosterItem.RosterRelation relation()

Contact relationship

Return: [RosterRelation]

Example:

BMXRosterItem.RosterRelation rosterRelation = item != null ? item.relation()
@Override
protected void onBindHolder(BaseViewHolder holder, int position) {
    ShapeImageView avatar = holder.findViewById(R.id.contact_avatar);
    TextView title = holder.findViewById(R.id.contact_title);
    TextView add = holder.findViewById(R.id.add_contact);
    final BMXRosterItem item = getItem(position);
    if (item == null) {
        return;
    }
    //是否是好友
    BMXRosterItem.RosterRelation rosterRelation = item.relation();
    boolean friend = rosterRelation == BMXRosterItem.RosterRelation.Friend;
    long myId = SharePreferenceUtils.getInstance().getUserId();
    // 自己不展示添加按钮
    add.setVisibility(myId == item.rosterId() || friend ? View.GONE : View.VISIBLE);
    add.setOnClickListener(v -> {
        long rosterId = item.rosterId();
        showAddReason(rosterId, item.authQuestion());
    });
    private void bindRoster() {
        // 是否是好友
        BMXRosterItem.RosterRelation rosterRelation = mRosterItem.relation();
        boolean friend = rosterRelation == BMXRosterItem.RosterRelation.Friend;
        TextView add = mHeader.getRightText();
        if (friend) {
            mTvOpenChat.setVisibility(View.VISIBLE);
            add.setVisibility(View.GONE);
        } else {
            mTvOpenChat.setVisibility(View.GONE);
            add.setVisibility(View.VISIBLE);
            add.setText(getString(R.string.add));
        }
//        if (friend) {
//            // 好友直接跳转单聊
//            ChatSingleActivity.startChatActivity(this, BMXMessage.MessageType.Single, mRosterId);
//            finish();
//            return;
//        }
        String name = mRosterItem.username();

function isMuteNotification

inline boolean isMuteNotification()

Whether to alert user for message

Return: bool

Example:

mSetAlias.setEndContent(TextUtils.isEmpty(alias) ? "" : alias);

String ext = mRosterItem.ext();
if (TextUtils.isEmpty(ext)) {
    mTvExt.setVisibility(View.GONE);
} else {
    mTvExt.setVisibility(View.VISIBLE);
    mTvExt.setText(ext);
}
// 免打扰
boolean isBlock = mRosterItem.isMuteNotification();
mSetDistrub.setCheckStatus(isBlock);
        name = rosterItem.alias();
    } else if (rosterItem != null && !TextUtils.isEmpty(rosterItem.nickname())) {
        name = rosterItem.nickname();
    } else if (rosterItem != null) {
        name = rosterItem.username();
    }
    if (item.conversationId() == 0){
        name = mContext.getString(R.string.sys_msg);
    }
    ChatUtils.getInstance().showRosterAvatar(rosterItem, avatar, mConfig);
    isDisturb = rosterItem != null && rosterItem.isMuteNotification();
} else if (type != null && type == BMXConversation.Type.Group) {
    BMXGroup groupItem = RosterFetcher.getFetcher().getGroup(item.conversationId());
    name = groupItem != null ? groupItem.name() : "";
    ChatUtils.getInstance().showGroupAvatar(groupItem, avatar, mGroupConfig);
    isDisturb = groupItem != null && groupItem.msgMuteMode() != null
            && groupItem.msgMuteMode() == BMXGroup.MsgMuteMode.MuteChat;
} else {
    ChatUtils.getInstance().showRosterAvatar(null, avatar, mConfig);

function addFriendAuthMode

inline BMXRosterItem.AddFriendAuthMode addFriendAuthMode()

How roster to validate adding friend.

Return: [AddFriendAuthMode]

Example:

function authQuestion

inline String authQuestion()

How roster to validate friend.

Return: std::string

Protected Functions Documentation

Example:

showAddReason(rosterId, item.authQuestion());

function BMXRosterItem

inline BMXRosterItem(
    long cPtr,
    boolean cMemoryOwn
)

Example:

function finalize

inline void finalize()

Example:

function getCPtr

static inline long getCPtr(
    BMXRosterItem obj
)

Public Attributes Documentation

variable swigCPtr

transient long swigCPtr;

Example:


Updated on 2022-01-26 at 17:18:31 +0800

© 2019-2023 MaximTop | Homepage Last modified time: 2023-08-09 14:48:15

results matching ""

    No results matching ""