package com.netease.nim.uikit.contact.core.provider; import com.netease.nim.uikit.contact.core.model.TeamMemberContact; import com.netease.nim.uikit.cache.TeamDataCache; import com.netease.nim.uikit.contact.core.item.AbsContactItem; import com.netease.nim.uikit.contact.core.item.ContactItem; import com.netease.nim.uikit.contact.core.item.ItemTypes; import com.netease.nim.uikit.contact.core.model.ContactGroupStrategy; import com.netease.nim.uikit.contact.core.query.TextComparator; import com.netease.nim.uikit.contact.core.query.TextQuery; import com.netease.nimlib.sdk.team.model.TeamMember; import java.util.ArrayList; import java.util.List; /** * 群成员数据源提供者 * <p/> * Created by huangjun on 2015/5/4. */ public class TeamMemberDataProvider { public static final List<AbsContactItem> provide(TextQuery query, String tid) { List<TeamMemberContact> sources = query(query, tid); List<AbsContactItem> items = new ArrayList<>(sources.size()); for (TeamMemberContact t : sources) { items.add(createTeamMemberItem(t)); } return items; } private static AbsContactItem createTeamMemberItem(TeamMemberContact teamMember) { return new ContactItem(teamMember, ItemTypes.TEAM_MEMBER) { @Override public int compareTo(ContactItem item) { return compareTeamMember((TeamMemberContact) getContact(), (TeamMemberContact) (item.getContact())); } @Override public String belongsGroup() { return ContactGroupStrategy.GROUP_TEAM; } }; } private static int compareTeamMember(TeamMemberContact lhs, TeamMemberContact rhs) { return TextComparator.compareIgnoreCase(lhs.getDisplayName(), rhs.getDisplayName()); } /** * * 数据查询 */ private static final List<TeamMemberContact> query(TextQuery query, String tid) { List<TeamMember> teamMembers = TeamDataCache.getInstance().getTeamMemberList(tid); List<TeamMemberContact> contacts = new ArrayList<>(); for (TeamMember t : teamMembers) { if (t != null && (query == null || ContactSearch.hitTeamMember(t, query))) { contacts.add(new TeamMemberContact(t)); } } return contacts; } }