第一次提交
This commit is contained in:
122
yunxinkit/documents/定制通讯录.md
Normal file
122
yunxinkit/documents/定制通讯录.md
Normal file
@@ -0,0 +1,122 @@
|
||||
# 定制通讯录
|
||||
|
||||
在添加了通讯录的基础上,可以做相应的定制化操作。包括:通讯录列表点击事件响应处理,定制通讯录列表的功能项等。
|
||||
|
||||
## 设置通讯录列表点击事件响应处理
|
||||
|
||||
通讯录列表提供点击事件的响应处理函数,见 `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<FuncItem> {
|
||||
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<AbsContactItem> provide() {
|
||||
List<AbsContactItem> items = new ArrayList<AbsContactItem>();
|
||||
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<? extends AbsContactViewHolder<? extends AbsContactItem>> onGetFuncViewHolderClass() {
|
||||
return FuncItem.FuncViewHolder.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AbsContactItem> onGetFuncItems() {
|
||||
return FuncItem.provide();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFuncItemClick(AbsContactItem item) {
|
||||
FuncItem.handle(getActivity(), item);
|
||||
}
|
||||
});
|
||||
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user