通讯录
大约 3 分钟
通讯录
EaseContactsListFragment
用于展示通讯录列表,包括联系人搜索,添加联系人,好友申请列表入口,群组列表入口,联系人列表。
昵称在中文或者英文的情况下可以实现按首字母分类。
使用示例
class ContactListActivity: AppCompactActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_contact_list)
EaseContactsListFragment.Builder()
.build()?.let { fragment ->
supportFragmentManager.beginTransaction()
.replace(R.id.fl_fragment, fragment).commit()
}
}
}
进阶用法
通过 EaseContactsListFragment.Builder 自定义设置
EaseContactsListFragment
提供了 Builder 构建方式,方便开发者进行一些自定义设置。目前提供的设置项如下:
EaseContactsListFragment.Builder()
.useTitleBar(true)
.setTitleBarTitle("title")
.enableTitleBarPressBack(true)
.setTitleBarBackPressListener(onBackPressListener)
.useSearchBar(false)
.setSearchType(EaseSearchType.USER)
.setListViewType(EaseListViewType.VIEW_TYPE_LIST_CONTACT)
.setSideBarVisible(true)
.setHeaderItemVisible(true)
.setHeaderItemList(mutableListOf<EaseCustomHeaderItem>())
.setOnHeaderItemClickListener(OnHeaderItemClickListener)
.setOnUserListItemClickListener(OnUserListItemClickListener)
.setOnItemLongClickListener(onItemLongClickListener)
.setOnContactSelectedListener(OnContactSelectedListener)
.setEmptyLayout(R.layout.layout_conversation_empty)
.setCustomAdapter(customAdapter)
.setCustomFragment(myContactsListFragment)
.build()
EaseContactsListFragment#Builder
提供的方法解释:
方法 | 描述 |
---|---|
useTitleBar() | 是否使用默认的标题栏(EaseTitleBar)。 - true :是。 - (默认) false : 否。 |
setTitleBarTitle() | 设置标题栏的标题。 |
enableTitleBarPressBack() | 设置是否支持显示返回按钮,默认为不显示返回按钮。 - true :是。- (默认) false : 否。 |
setTitleBarBackPressListener() | 设置点击标题栏返回按钮的监听器。 |
useSearchBar() | 设置是否使用搜索栏。 - true :是。 - (默认) false : 否。 |
setSearchType() | 设置搜索类型 EaseSearchType。 - USER - SELECT_USER - CONVERSATION |
setListViewType() | 设置列表类型 EaseListViewType。 - LIST_CONTACT :默认联系人列表,不带复选框;- LIST_SELECT_CONTACT :带复选框的联系人列表。 |
setSideBarVisible() | 设置是否显示首字母索引工具栏。 - (默认) true :是。 - false : 否。 |
setHeaderItemVisible() | 设置是否显示列表头部布局。 |
setHeaderItemList() | 设置列表头部 Item 数据对象列表。 |
setOnHeaderItemClickListener() | 设置列表头部 Item 点击事件。 |
setOnUserListItemClickListener() | 设置列表条目点击事件。 |
setOnItemLongClickListener() | 设置条目长按事件监听器。 |
setOnContactSelectedListener() | 设置条目选中事件监听器。 |
setEmptyLayout() | 设置会话列表的空白页面。 |
setCustomAdapter() | 设置自定义的适配器,默认为 EaseContactListAdapter 。 |
setCustomFragment() | 设置自定义聊天 Fragment,需要继承自 EaseContactsListFragment 。 |
自定义联系人列表
添加自定义联系人布局
开发者可以继承 EaseContactListAdapter
实现自己的 CustomContactListAdapter
,然后将 CustomContactListAdapter
设置到 EaseContactsListFragment#Builder#setCustomAdapter
中。
- 创建自定义适配器
CustomContactListAdapter
,继承自EaseContactListAdapter
,重写getViewHolder
和getItemNotEmptyViewType
方法。
class CustomContactListAdapter : EaseContactListAdapter() {
override fun getItemNotEmptyViewType(position: Int): Int {
// 根据消息类型设置自定义 itemViewType。
// 如果使用默认的 itemViewTyp,返回 super.getItemNotEmptyViewType(position) 即可。
return CUSTOM_YOUR_CONTACT_TYPE
}
override fun getViewHolder(parent: ViewGroup, viewType: Int): ViewHolder<EaseUser> {
// 根据返回的 viewType 返回对应的 ViewHolder。
// 返回自定义的 ViewHolder 或者使用默认的 super.getViewHolder(parent, viewType)
return CUSTOM_YOUR_VIEW_HOLDER()
}
}
- 添加
CustomContactListAdapter
到EaseContactsListFragment#Builder
。
builder.setCustomAdapter(CustomContactListAdapter)
设置成可选择的联系人列表
例如,创建群组时需添加多个用户,可点击联系人对应的复选框进行选择。
builder.setSearchType(EaseSearchType.SELECT_USER)
事件监听
EaseContactsListFragment.Builder()
.setOnHeaderItemClickListener(OnHeaderItemClickListener)
.setOnUserListItemClickListener(OnUserListItemClickListener)
.setOnItemLongClickListener(onItemLongClickListener)
.setOnContactSelectedListener(OnContactSelectedListener)
.build()
方法 | 描述 |
---|---|
setOnHeaderItemClickListener() | 设置列表头部 Item 点击事件。 |
setOnUserListItemClickListener() | 设置列表条目点击事件。 |
setOnItemLongClickListener() | 设置条目长按事件监听器。 |
setOnContactSelectedListener() | 设置条目选中事件监听器。 |
更多
获取联系人系统通知未读数
val systemConversation = EaseNotificationMsgManager.getInstance().getConversation()
systemConversation.let { cv->
newRequestCount = cv.unreadMsgCount
}