# 定制通讯录 在添加了通讯录的基础上,可以做相应的定制化操作。包括:通讯录列表点击事件响应处理,定制通讯录列表的功能项等。 ## 设置通讯录列表点击事件响应处理 通讯录列表提供点击事件的响应处理函数,见 `ContactEventListener` : - 通讯录联系人项点击事件处理 - 通讯录联系人项长按事件处理,一般弹出菜单:移除好友、添加到星标好友等 - 联系人头像点击相应 ```java // 在Application初始化中设置 NimUIKit.setContactEventListener(new ContactEventListener() { @Override public void onItemClick(Context context, String account) { // 进入个人资料页,开发者自行实现 UserProfileActivity.start(context, account); } @Override public void onItemLongClick(Context context, String account) { } @Override public void onAvatarClick(Context context, String account) { // 进入个人资料页,开发者自行实现 UserProfileActivity.start(context, account); } }); ``` ## 定制通讯录列表功能项 定制通讯录列表功能项依靠 `ContactsCustomization` 实现,例如折叠群、黑名单、消息验证、我的电脑等。 首先定义功能项 `FuncItem`,示例: ```java public final static class FuncItem extends AbsContactItem { static final FuncItem NORMAL_TEAM = new FuncItem(); static final FuncItem BLACK_LIST = new FuncItem(); @Override public int getItemType() { return ItemTypes.FUNC; } @Override public String belongsGroup() { return null; } public static final class FuncViewHolder extends AbsContactViewHolder { private ImageView image; private TextView funcName; private TextView unreadNum; @Override public View inflate(LayoutInflater inflater) { View view = inflater.inflate(R.layout.func_contacts_item, null); this.image = (ImageView) view.findViewById(R.id.img_head); this.funcName = (TextView) view.findViewById(R.id.tv_func_name); this.unreadNum = (TextView) view.findViewById(R.id.tab_new_msg_label); return view; } @Override public void refresh(ContactDataAdapter contactAdapter, int position, FuncItem item) { if (item == NORMAL_TEAM) { funcName.setText("讨论组"); image.setImageResource(R.drawable.ic_secretary); } else if (item == BLACK_LIST) { funcName.setText("黑名单"); image.setImageResource(R.drawable.ic_black_list); } } } static List provide() { List items = new ArrayList(); items.add(NORMAL_TEAM); items.add(BLACK_LIST); return items; } static void handle(Context context, AbsContactItem item) { if (item == NORMAL_TEAM) { TeamListActivity.start(context, ItemTypes.TEAMS.NORMAL_TEAM); } else if (item == BLACK_LIST) { BlackListActivity.start(context); } } } ``` 然后添加功能项到 `ContactsCustomization`: ```java // 功能项定制 fragment.setContactsCustomization(new ContactsCustomization() { @Override public Class> onGetFuncViewHolderClass() { return FuncItem.FuncViewHolder.class; } @Override public List onGetFuncItems() { return FuncItem.provide(); } @Override public void onFuncItemClick(AbsContactItem item) { FuncItem.handle(getActivity(), item); } }); ```